【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】