iptables nat 表應用

1、iptables nat 表應用

iptables nat 表應用

上圖的操作,說白了就是要做一個路由器,路由器可以上網,電腦就可以上網。
先操作一下前期準備,打開虛擬機,將兩個Linux窗口打開,然後分別拍一張快照,命名爲“iptables 小實驗前”。此舉是方便實驗過程出現不可挽回的錯誤,可以通過快照恢復,然後重新做實驗。lyslinux-02 是之前克隆的虛擬機。
iptables nat 表應用
右擊上圖紅色框框 “編輯虛擬機設置” 的位置 ,跳出彈框,選擇“添加”,網絡適配器,下一步,見下圖,
iptables nat 表應用
保持默認,點擊“完成”,見下圖,
iptables nat 表應用
接着按下圖箭頭指示操作,見下圖,
iptables nat 表應用
這邊選擇“LAN 區段”,相當於給這個網卡連到了一個內網的交換機上,Windows機器和這個交換機是連不上的。這樣的話,這臺機器和另一臺的機器連上同一個內網的交換機,它們兩者之間就可以通信了。
接着在“LAN 區段”上選擇剛剛設置的區段,見下圖,
iptables nat 表應用
這個機器的網卡就添加好了。
接着操作另一臺機器的網卡,右擊上圖紅色框框 lyslinux-02 的位置 ,選擇“設置”,跳出彈框,選擇“添加”,網絡適配器,下一步,見下圖,
iptables nat 表應用
操作完畢,點擊“完成”,見下圖,
iptables nat 表應用
然後往下操作,選擇“網絡適配器2”,在“LAN 區段”這邊選擇剛剛設置的 LYS ,再點擊“確定”,見下圖,
iptables nat 表應用
以上操作就是爲了讓這兩臺機器,選擇同一個交換機。
準備工作做好了,下面就是啓動這兩臺機器。啓動完成之後,使用 PuTTY 遠程登錄lyslinux-01,輸入命令 ifconfig ,回車,見下圖,
iptables nat 表應用
上圖紅色框框的內容,就是剛剛增加的網卡,現在要給 ens37 這個網卡配置一個 IP。我們可以通過命令行給 ens37 添加 IP ,也可以設置配置文件,設置配置文件和設置虛擬網卡的步驟是一樣的。將 ens33 的網卡配置文件複製一份到 ens37 裏面,然後進入配置文件修改 IP、NETMASK 就可以,不用設置 DNS 和網關這些。更改配置文件的方式比較複雜,這邊演示比較簡單的方法,輸入命令 ifconfig ens37 192.168.100.1/24 ,回車,見下圖,
iptables nat 表應用
可以看到,成功的給網卡 ens37 配置了 IP 。當然這個 IP 一重啓就會失效,要想 IP 永久生效,就需要編輯配置文件。
對於另一臺機器,因爲剛剛把網絡連接關閉了,無法遠程登錄,所以要回到虛擬機上操作,見下圖,
iptables nat 表應用
使用 ifconfig 命令還可以看到 ens33 這個網卡的 IP,它雖然在,但還是不能連接網絡的,爲了保險起見,使用命令 ifdown ens33 來關閉掉,見下圖,
iptables nat 表應用
這樣就看不到 ens33 的 IP 了。同樣的方法,現在給這臺機器的 ens37 網卡設置 IP,見下圖,
iptables nat 表應用
IP 設置成功。現在來測試一下,連接一下lyslinux-01 這臺機器的網絡,輸入命令 ping 192.168.100.1 ,回車,見下圖,
iptables nat 表應用
上圖顯示網絡沒有連接成功,應該是 lyslinux-01 這臺機器的網絡有點問題,回到 PuTTY 上查看一下,見下圖,
iptables nat 表應用
發現 ens37 的IP地址又不見了,這時候要重新給它配置 IP ,見下圖,
iptables nat 表應用
然後再回到虛擬機上去連接網絡,見下圖,
iptables nat 表應用
可以看到網絡連接成功了。
接着去 lyslinux-01 這臺機器上連接 lyslinux-02的網絡,輸入命令 ping 192.168.100.100 ,回車,見下圖,
iptables nat 表應用
也可以連接網絡了。
現在總結一下,這個nat表應用的準備工作:
01機器兩塊網卡 ens33(192.168.218.128)、ens37(192.168.100.1),ens33 可以上外網,ens37僅僅是內部網絡,02機器只有ens37(192.168.100.100),和01機器ens37可以通信互聯。
現在來檢查一下,Windows 的 cmd 能不能連接這兩個 IP,見下圖,
iptables nat 表應用
可以看到,都是不能連接的。現在來看一下 lyslinux-02 機器不能連接 192.168.218.128,也不能連接 192.168.218.1 ,也不能上外網,見下圖,
iptables nat 表應用
可以看到也都是不行的。
爲了實現需求1:可以讓02機器連接外網。
在01機器上操作,這個文件 /proc/sys/net/ipv4/ip_forward 裏面的內容,默認是 0,表示它沒有開啓內核轉發,需要改成 1 。打開路由轉發,輸入命令 echo "1">/proc/sys/net/ipv4/ip_forward ,回車,即可將文件更改爲 1 。見下圖,
iptables nat 表應用
以上操作叫做打開端口轉發。
接着在01機器上增加一條規則,執行命令 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE ,回車,見下圖,
iptables nat 表應用
有了這條規則,纔可以實現 192.168.100.0 這個網段上網。
接下來在02機器上設置網關爲 192.168.100.1 ,輸入命令 route add default gw 192.168.100.1,回車,見下圖,
iptables nat 表應用
設置完成後,也可以實現連接 192.168.218.1 這個網卡。這意味02機器可以跟外網相通了。

接着設置一下 DNS,看看能不能聯網,輸入命令 vi /etc/resolv.conf ,回車,見下圖,
iptables nat 表應用
輸入上圖紅色框框的內容,保存後退出。119.29.29.29 是公共的 DNS,然後來看一下能不能連接,見下圖,
iptables nat 表應用
發現是可以連接的,也可以連接外網。
到這邊,我們的目的就達到了,讓02機器也可以連接外網。現在在Windows上面使用cmd來查看一下,見下圖,
iptables nat 表應用
發現Windows還是不能連接 192.168.100.100 。這邊可以將01機器理解爲路由器,02機器是手機、電腦等可以聯網的機器。

需求2:03機器只能和01機器通信,讓03機器可以直接連通02機器的22端口。這步操作叫 端口映射。
目前爲止,02機器還只能在虛擬機上操作,不能遠程登錄。現在來實現02機器的遠程登錄,01機器上打開路由轉發,同樣的, echo "1">/proc/sys/net/ipv4/ip_forward 這個命令上面已經操縱過,所以這一步省略。接着往下操作,我們需要把之前的規則刪除掉,以免影響到後面的操作,輸入命令 iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE ,回車,見下圖,
iptables nat 表應用
接着在01機器上增加兩條規則,執行命令 iptables -t nat -A PREROUTING -d 192.168.218.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22,回車。這個命令做一個端口轉發,將目標IP 192.168.218.128 和端口 1122,轉到IP 192.168.100.100 和端口 22,這邊操作的是進去的包。還有一個回來的包,執行命令 iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.218.128 ,回車。這個命令將原IP 192.168.100.100 改成目標IP 192.168.218.128 。見下圖,
iptables nat 表應用
以上操作完成之後,還需要在02機器上設置網關爲 192.168.100.1,這一步前面也操作過了,這邊也可以省略。
以上操作完成之後,就可以通信了。現在來驗證一下,新建一個PuTTY回話窗口,具體操作見下圖,
iptables nat 表應用
作爲測試的窗口,其他地方就不做設置了。接着打開新的PuTTY窗口 test100,見下圖,
iptables nat 表應用
這邊選擇“是(Y)”,接着登錄上去,查看IP,見下圖,
iptables nat 表應用
可以看到ens37的IP是 192.168.100.100 ,接着看看能不能連接外網,見下圖,
iptables nat 表應用
此時的Windows還是不能連接 192.168.100.100 ,見下圖,
iptables nat 表應用

2、iptables 規則備份和恢復

iptables nat 表應用

正常情況下,使用命令 service iptables save ,會把規則保存到 iptables 的配置文件中 /etc/sysconfig/iptables 。如果不想保存在配置文件中,可以使用重定向命令,將規則重定向到一個文件中,文件名可以隨意命名。見下圖,輸入命令 iptables-save > /tmp/ipt.txt ,回車,
iptables nat 表應用
上面保存成功之後,可以看到nat表裏面纔有規則,filter表裏面是空的。
先將規則清除掉,輸入命令 iptables -t nat -F,回車,見下圖,
iptables nat 表應用
恢復剛纔的備份,使用命令 iptables-restore < /tmp/ipt.txt ,restore 和 save 正好是相反的。
要想重啓系統之後,就能馬上加載規則,最好還是把規則保存在配置文件 /etc/sysconfig/iptables 中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章