Iptables防火牆(SNAT/DNAT)
SNAT策略及應用
SNAT源地址轉換是linux命令中的一種數據包控制類型,作用是根據指定條件修改數據包的源IP地址。
共享固定IP地址上網
Linux網關服務器,eth0和eth1其中eth0爲外網地址X.X.X.X(此處爲外網地址) eth1爲內網地址192.168.2.1
所有局域網PC機的默認網關爲192.168.2.1,且已經設置了正確的DNS服務器。
要求192.168.2.0/24網段的PC機能夠通過共享方式正常訪問Internet。
打開網關路由轉發
修改/etc/sysct1.conf,把net.ipv4.ip_forward = 0 改爲1如下
[root@bogon ~]# vim/etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@bogon ~]# sysctl -p #讀取修改後的配置
臨時開啓路由轉發的方法:[root@localhost ~]# echo 1 >/proc/sys/net/ipv4/ip_forward或者[root@localhost ~]# sysctl -wnet.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
設置SNAT策略
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -oeth0 -j SNAT --to-source X.X.X.X
完成,測試就好了。
當使用共享動態IP地址上網的時候網關的IP地址可能並不是固定的,例如使用ADSL撥號寬帶接入時,在這種情況下iptables提供了MASQUERADE(僞裝)的數據包控制類型,是SNAT的一個特例,設置時只需要去掉SNAT策略中的“--to-source IP”改用“-j MASQUERADE”
[root@localhost ~]# iptables -t nat -APOSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
DNAT策略及應用
DNAT,目標地址轉換,其作用是根據指定條件修改數據包的目標IP地址、目標端口。
SNAT用來修改源IP地址,而DNAT用來修改目標IP地址,目標端口,SNAT只能用在nat表的POSTROUTING鏈,而DNAT只能用在nat表的PREROUTING鏈和OUTPUT鏈(或被其調用的鏈)中。
發佈企業內部的web服務器
1.公司註冊域名www.XXXX.com.IP地址爲X.X.X.X(外網IP)
2.公司網站服務器位於局域網內,IP地址爲192.168.2.5
3.要求在internet中通過域名訪問公司網站
操作如下
a) 打開網關路由(不在複述SNAT有提到)
b) 設置DNAT
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d X.X.X.X -ptcp --dport 80 -j DNAT --to-destination 192.168.2.5
測試。