iptables nat表应用案例:
nat表作用:
导流
nat表作用位置:
KVM或者OpenStack中虚拟机或云主机与外部通信。(云主机导流)
Docker管理的容器与外部通信
nat表规则动作所对应的链:
SNAT 源地址转换 应用于出口POSTROUTING
MASQUERADE 源地址转换 应用于出口POSTROUTING
DNAT 目的地址转换 应用于进行PREROUTING
REDIRECT 端口重定向 应用于进口PREROUTING
Linux主机开启路由转发功能:我们的电脑就是路由器。
sysctl -a |grep ip_forward
net.ipv4.ip_forward = 1
cat /proc/sys/net/ipv4/ip_forward
# 以上为开启
# 以下为关闭
echo 0 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
vim /etc/sysctl.conf # 系统控制配置文件
net.ipv4.ip_forward = 1
sysctl -p # 刷新
sysctl -a # 查看内核修改的参数
涉及到临时修改还是永久修改。
我们开启路由转发的目的,主要是为了实现Linux系统的SNAT和DNAT功能。
SNAT MASQUERAED 源地址转换案例:
两个概念的区别:
SNAT: 将私有地址转换成公网地址上网。
MASQUERAED: 私有地址想上网,使用公网地址的某个端口去上网,其实就是一个伪装。
案例:实现内网主机上网功能:把我们的主机配置成路由器。
网络连接拓扑:
win系统使用vmware workstation实现了SNAT实验拓扑:
vnet8 NAT 性质:交换机。
三台服务器,第1台是内网主机,第2台是防火墙做路由器用,第3台是外网服务器(httpd)。
第2台和第3台主机上安装wireshark。
yum install -y wireshark*
第3台服务器:
echo "snat test" >> /var/www/html/index.html
systemctl start httpd
curl http://localhost
第2台服务器:
yum install -y iptables-services
开启路由转发功能:
sysctl -a |grep "ip_forward"
net.ipv4.ip_forward = 0
# 永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
sysctl -a |grep "ip_forward"
非交互方式配置文件。
systemctl enable iptables
systemctl start iptables
iptables -t net -nL
# 从上行的角度:你给服务器发数据
iptables -t nat -I POSTROUING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 192.168.3.1
vim /etc/sysconfig/iptables
在这个策略文件中,将其中的forward的策略进行注释。forward的策略都是拒绝。
iptables-restore < /etc/sysconfig/iptables
部署完的验证:
Wireshark Network Analyzer: Wireshark 网络分析仪
然后配置MASQURATED:
iptables -t nat -D POSTROUING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 192.168.3.1
我们将这条策略进行删除,发现内网主机还是可以访问服务器的。可以通过关机重启。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -S 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
MASQUERADE all -- 192.168.1.0/24 0.0.0.0/0
0.0.0.0/0 默认路由
这个SNAT和MASQUERADE类似SNAT的区别。
KVM虚拟机访问外网导流:
虚拟系统管理器。
virbr0: 交换机 桥。交换机的前身是网桥。
iptables -t nat -nL
其中的Chain POSTROUTING (Policy ACCEPT)
其中的MASQUERADE /RETURN 的策略决定了KVM的数据包的网络地址转换。
内核添加的防火墙NAT的策略。
KVM虚拟机能不能上网,就是由这个nat表决定的。