有的时候机器有一台网关机器,需要做端口转发的工作,那么可以使用iptables或者使用firwalld进行配置,firewalld底层也是调用的跟iptables一样的内核模块的,只是命令的不同
机器A
机器B
机器C
配置访问192.168.0.85端口44561映射到192.168.1.102的4456端口
配置访问192.168.0.85端口44562映射到192.168.1.101的4456端口
开启内核转发功能
[root@lab103 ~]# cat /etc/sysctl.conf |grep forwa
net.ipv4.ip_forward = 1
[root@lab103 ~]# sysctl -p
#!/bin/sh
IPT="/sbin/iptables"
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -Z
$IPT -t nat -Z
iptables -t filter -P FORWARD ACCEPT
#DNAT 做端口转发 lab102
$IPT -t nat -A PREROUTING -d 192.168.0.85 -p tcp --dport 44561 -j DNAT --to-destination 192.168.1.102:4456
#SNAT 做端口转发
$IPT -t nat -A POSTROUTING -p tcp -d 192.168.1.102 --dport 4456 -j SNAT --to-source 192.168.1.103
#DNAT 做端口转发 lab1021
$IPT -t nat -A PREROUTING -d 192.168.0.85 -p tcp --dport 44562 -j DNAT --to-destination 192.168.1.101:4456
#SNAT 做端口转发
$IPT -t nat -A POSTROUTING -p tcp -d 192.168.1.101 --dport 4456 -j SNAT --to-source 192.168.1.103
上面的注意下那个to-source后面应该接上转发机器的内网的IP的地址,如果错了就有问题
#!/bin/sh
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-port=44561/tcp --permanent
firewall-cmd --add-port=44562/tcp --permanent
firewall-cmd --add-forward-port=port=44561:proto=tcp:toport=4456:toaddr=192.168.1.102 --permanent
firewall-cmd --add-forward-port=port=44562:proto=tcp:toport=4456:toaddr=192.168.1.101 --permanent
firewall-cmd --reload
firewall-cmd --list-all
上面的配置好转发以后都不要在转发的机器本机进行测试,本机上直接测试会不通,这个需要在外部进行访问转发机器进行验证