生活中经常会遇到这样的情况:拉一根网线、一个家用小路由器、两台主机,让这两台主机的部分端口都公布到外网上。这时候只要一台主机是linux系统,将路由器的DMZ主机指向这台linux系统的ip,那么可以用iptables很容易将另一台的端口转发到外网上。
例如:
名称 | 系统 | ip | 备注 |
---|---|---|---|
主机A | linux | 192.168.3.100 | 路由器DMZ主机指向该主机 |
主机B | linux/win/mac | 192.168.3.101 | 将mysql端口3306公布外网 |
下面在主机A上通过iptables将主机B的3306转发到外网上
1、安装iptables服务器(略)
2、开启linux的数据转发功能
vim /etc/sysctl.conf
将net.ipv4.ip_forward=0
修改为net.ipv4.ip_forward=1,并取消注释"#"
3、执行如下语句
iptables -t nat -A PREROUTING -d 192.168.3.100 -p tcp --dport 3307 -j DNAT --to 192.168.3.101:3306
iptables -t nat -A POSTROUTING -d 192.168.3.101 -p tcp --dport 3306 -j SNAT --to 192.168.3.100
iptables -A FORWARD -p tcp -d 192.168.3.101 --dport 3307 -j ACCEPT