ptables防火牆詳解 二 SNAT和DNAT

2021-06-21 09:21:48 字數 2422 閱讀 4072

在配置snat和dnat之前,需要開啟linux系統中的位址**功能,否則資料無法通過防火牆**出去。

修改/etc/sysctl.conf配置檔案件,將ip_forward的值設定為1即可。

[root@localhost /]#vim /etc/sysctl.conf

......//省略部分內容

net.ipv4.ip_forwaed=1             //將此行中的0改為1

[root@localhost /]#sysctl -p     //重新讀取修改後的配置

也可以開啟臨時的路由**,可以執行以下操作。

[root@localhost /]#echo 1> /proc/sys/net/ipv4/ip_forward

或者[root@localhost /]#sysctl -w net.ipv4.ip_forward=1

snat的策略及應用

snat:源位址轉換,是linux防火牆的一種位址轉換操作,也是iptables命令中的一種資料報控制型別,其作用是根據指定條件修改資料報的源ip位址。

snat策略只能用在nat表的postrouting鏈中,使用iptables命令編寫snat策略時,需要結合「--to-source  ip位址」選項來指定修改後的源ip位址。

列如:linux閘道器伺服器通過eth0和eth1分別連線internet和區域網,其中eth0的ip位址為218.29.30.31,eth1的ip位址為192.168.1.1。現在要求在linux閘道器伺服器上配置規則,使用區域網內的所有使用者可以通過共享的方式訪問網際網路。可執行以下操作。

1)開啟路由**,上面已經講過,這裡不在詳述了。

2)在iptables的postrouting中編寫snat規則。

[root@localhost /]#iptables -t nat -a postrouting -s 192.168.1.0/24 -o eth0 -j snat --to-source 218.29.30.31

3)在某些情況下,閘道器的外網ip位址可能不是固定的,列如使用adsl寬頻接入時,針對這這種需求,iptables提供了乙個名為masquerase(偽裝)的資料報控制型別,masquerade相當於snat的乙個特列,同樣同來修改資料報的源ip位址只過過它能過自動獲取外網介面的ip位址。

參照上乙個snat案例,若要使用masquerade偽裝策略,只需要去掉snat策略中的「--to-source ip位址」。然而改為「-j masquerade」指定資料報的控制型別。對於adsl寬頻連線來說,連線名稱通常為ppp0,ppp1等。操作如下

[root@localhost /]#iptables -t nat -a postrouting -s 192.168.1.0/24 -o ppp0 -j masquerade

4)測試snat共享接入的結果

同過上面的配置,這時內部區域網訪問網際網路所使用的ip位址是閘道器伺服器的外網介面位址了。我們可以在往外客戶端執行「tcpdump -i eth0」監聽訪問本機的資料流,然後在內網ping外網客戶端,然後檢視外網客戶端監聽的狀態,會發現,訪問外網客戶機的ip位址是閘道器伺服器的外網介面位址,而不是內部區域網的位址。

dnat策略及應用

dnat:目標位址轉換,是linux防火牆的另一種位址轉換操作,同樣也是iptables命令中的一種資料報控制型別,其作用是根據指定條件修改資料報的目標ip位址,目標埠。

dnat策略與snat策略非常相似,只不過應用方向反過來了。snat用來修改源位址ip,而dnat用來修改目標ip位址,目標埠;snat只能用在nat表的postrouting鏈,而dnat只能用在nat表的prerouting鏈和output鏈中。

列如:借助上述網路環境,公司內部區域網內搭建了一台web伺服器,ip位址為192.168.1.7,現在需要將其發布到網際網路上,希望通過網際網路訪問web伺服器。那麼我們可以執行如下操作。

1)在iptables的prerouting中編寫dnat規則。

[root@localhost /]#iptables -t nat -a prerouting -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j dnat --to-destination 192.168.1.7:80

2)再列如:公司的web伺服器192.168.1.7需要通過網際網路遠端管理,由於考慮到安全問題,管理員不希望使用預設埠進行訪問,這時我們可以使用dnat修改服務的預設埠。操作如下:

[root@localhost /]#iptables -t nat -a prerouting -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j dnat --to-destination 192.168.1.7:22

3)在外網客戶端瀏覽器中訪問閘道器伺服器的外網介面,可以發現訪問的居然是內網192.168.1.7的web伺服器的網頁。而在使用sshd連線2346埠時,居然可以遠端連線到192.168.1.7伺服器上。

iptable防火牆詳解

一.基本格式 1.iptable t 表 命令選項 連名 匹配條件 j 動作 2.常用命令選項如下 二.舉例 iptable t filter f 清空filter表中所有規則 iptable t filter z 清空filter表中的計數器值 iptable t filter x 清除filte...

iptable防火牆詳解

一.基本格式 1.iptable t 表 命令選項 連名 匹配條件 j 動作 2.常用命令選項如下 二.舉例 iptables t filter f 清空filter表中所有規則 iptables t filter z 清空filter表中的計數器值 iptables t filter x 清除fi...

iptable防火牆詳解

iptable防火牆詳解 一.基本格式 1.iptable t 表 命令選項 連名 匹配條件 j 動作 2.常用命令選項如下 二.舉例 iptable t filter f 清空filter表中所有規則 iptable t filter z 清空filter表中的計數器值 iptable t fil...