【linux端口转发】使用rinetd/iptables

场景:手机客户端想通过域名转发访问线下服务器,但是问题1:域名绑定不能绑定到端口只能到ip-ip的绑定,默认绑定的线下端口必须与线上一致;而线上端口默认是80,该端口为系统端口,用户程序不能使用。于是想到将线下服务器的80端口绑定到用户自定义的程序端口上。

解决:使用iptables或rinetd

一、iptables

命令如下:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports  8000

注意:需要root权限

二、rinetd

步骤:

1、下载:从官网http://www.boutell.com/rinetd/ 下载linux版本

2、安装:

tar zxvf rinetd.tar.gz
make
make install

此处注意1:安装rinetd需要root权限,请到root账户下执行安装;

注意2:make install的时候可能出现 /usr/man/man8 目录不存在的错误,解决方式1是直接创建该文件夹即可;解决方式2是打开Makefile换个存在的目录

3、配置:

编辑配置
vi /etc/rinetd.conf
0.0.0.0 80  0.0.0.0 8000

说明一下(0.0.0.0表示本机绑定所有可用地址)
将所有发往本机80端口的请求转发到本机的8000端口

配置文件的命令格式是
[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址  源端口   目的地址  目的端口

4、启动程序
pkill rinetd  ##关闭进程
./rinetd -c /etc/rinetd.conf  ##启动转发
把这条命令加到/etc/rc.local里面就可以开机自动运行

5、验证:

访问线下机器的80端口和8000端口检查返回是否一致。

解决【end】

原文地址:https://www.cnblogs.com/mangu-uu/p/3482322.html