参考:
https://blog.csdn.net/aoli_shuai/article/details/86288838
https://blog.csdn.net/u011537073/article/details/82685586
了解iptables 结构
iptables的结构:iptables -> Tables -> Chains -> Rules. 即tables由chains组成,而chains又由rules组成
Filter
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表
- INPUT链 – 处理来自外部的数据。
- OUTPUT链 – 处理向外发送的数据。
- FORWARD链 – 将数据转发到本机的其他网卡设备上。
NAT
- PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
- POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
- OUTPUT链 – 处理本机产生的数据包。
Mangle
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS
(Quality of Service,服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。)
- PREROUTING
- OUTPUT
- FORWARD
- INPUT
- POSTROUTING
Raw
用于处理异常
- PREROUTING chain
- OUTPUT chain
客户端和web服务端是无法单独通行的,nat server 有两块网卡,通过在nat server中设置iptables 规则,使得能进行http请求
在nat server 中,先更改配置文件,/etc/sysctl.conf 中改为
net.ipv4.ip_forward = 1
修改完成后,命令行sysctl -p 让其全部执行生效
添加iptables规则
iptables -t(built-in tables which are corresponding to different traffic rules) nat()
iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232
在client机器里面加入一条路由,确保所有的数据包都从10.10.177.232中出去
可以再网卡配置文件里面设置,也可以使用route命令进行设置
route add 0.0.0.0 gw 10.10.177.232
nat server设置iptables规则
iptables -t nat -A PREROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.233:80