首先配置NAT环境:
A机:桥接网卡,作为外网。IP:172.17.252.227
B机:作为NAT转换机,两个网卡都有。IP:172.17.123.224 192.168.199.138
开启转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
或者vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
C机:仅主机网卡,作为内网。IP:192.168.199.142
添加路由记录route add default gw 192.168.199.138
实现SNAT:
在NAT转换机上:
iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -j SNAT --to-source 172.17.123.224 转换源地址
效果:实现内网可以访问外网,外网不可以访问内网
C机:
A机:
实现DNAT:
在NAT转换机上:
iptables -t nat -I PREROUTING 1 -d 172.17.123.224 -j DNAT --to-destination 192.168.199.142 转换目标地址
效果:实现外网访问内网
A机:
实现REDIRECT转发:通过改变目标IP和端口,将接受的包转发至不同端口
本例实现目标地址是本机192.168.199.143端口是80的包转发到本机8080端口:
准备工作:修改192.168.199.143主机的httpd服务的监听端口为8080
vim /etc/httpd/conf/httpd.conf
Listen 8080
systemctl restart httpd
防火墙策略:
iptables -t nat -A PREROUTING -d 192.168.199.143 -p tcp --dport 80 -j REDIRECT --to-ports 8080
效果:访问网页的时候不需要加上8080端口也可以访问,因为会把80转换为8080
在centos7上还可以用firewalld实现:
firewall-cmd --add-masquerade 启用伪装
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.199.143
也可以实现转发到远程主机,只需要更改为远程主机ip即可