iptables的DNAT和SNAT

一、概述:
1、 SNAT, DNAT, MASQUERADE都是NAT
2、MASQUERADE是SNAT的一个特例
3、SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机
4、MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE
5、DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B
6、因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的
二、实例
要求:
1、现在只有一个IP(10.144.235.10)可以上internet,希望局域网中的三台机器通过SNAT均可上网。
2、通过访问10.144.235.10的8088端口可转发到computer1的80端口

iptables的DNAT和SNAT_第1张图片
3、网络配置信息:
防火墙:
eth0:10.144.235.10/24 gw:10.144.235.1 dns:8.8.8.8 (可以上internet)
eth1:192.168.80.1/24
computer1:
eth1:192.168.80.10/24 gw:192.168.80.1 dns:8.8.8.8
computer2:
eth1:192.168.80.20/24 gw:192.168.80.1 dns:8.8.8.8
computer3:
eth1:192.168.80.30/24 gw:192.168.80.1 dns:8.8.8.8
4、在防火墙上操作
载入相关模块

# modprobe ip_tables
# modprobe

将/etc/sysctl.conf下面参数改为1

net.ipv4.ip_forward = 1

执行以下命令来启用 sysctl.conf参数

# sysctl -p /etc/sysctl.conf

清除原有防火墙规则

# iptables -F

重启防火墙

service iptables restart

做snat转发

# iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -j SNAT --to-source 10.144.235.10

如果eth0的IP为dhcp获取,IP不固可使用下面转发规则

# iptables-t nat -A POSTROUTING -s 192.168.80.0/24 -o eth0 -j MASQUERADE

使用DNAT转发computer1的80端口到10.144.235.10的8088端口

# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8088 -j DNAT --to-destination 192.168.80.10:80

你可能感兴趣的:(iptables,SNAT,DNAT)