背景:
一个集群,只有一个公网IP,外网的客户机需要访问内网某台机器运行的服务,这时需要通过端口转发来实现。
假设配置:
Machine1: 外网IP:113.30.150.75 网卡:em0 ,内网IP:192.168.0.1 网卡:em1
Machine6: 内网IP:192.168.0.6
需求:
通过访问113.30.150.75:19000来访问192.168.0.6:9000上提供的服务,即将113.30.150.75:19000映射到192.168.0.6:9000
方法:
非永久:
Machine1上面:
$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A PREROUTING -s 0/0 -d 113.30.150.75 -p tcp --dport 19000 -j DNAT --to 192.168.0.6:9000
$ sudo iptables -t nat -A POSTROUTING -d 192.168.0.6 -p tcp --dport 9000 -o em1 -j SNAT --to 192.168.0.1
这样就可以了,但是如果Machine1重启,配置会丢失。如果想要Machine1重启时,依然保留映射。
永久:
Machine1上面:
$ sudo vim /etc/rc.local
在这个文件最后,添加如下几行,注意是不加sudo的,
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -s 0/0 -d 113.30.150.75 -p tcp --dport 19000 -j DNAT --to 192.168.0.6:9000
iptables -t nat -A POSTROUTING -d 192.168.0.6 -p tcp --dport 9000 -o em1 -j SNAT --to 192.168.0.1
即可。
Linux系统端口映射(路由转发):http://www.linuxdiyf.com/linux/16245.html
Linux iptables端口映射设置:http://www.linuxdiyf.com/linux/16244.html
Linux下端口映射工具RINETD:http://www.linuxdiyf.com/linux/8726.html
Linux端口映射转发工具rinetd安装使用:http://www.linuxdiyf.com/linux/1027.html