1. 程式人生 > >iptables filter表案例/iptables nat表應用

iptables filter表案例/iptables nat表應用

修改 它的 登錄 strong 服務 上網 table http roo

iptables filter表案例

iptables filter 表案例
創建一個iptables.sh腳本

[root@Ask-02 ~]# vim /usr/local/sbin/iptables.sh

寫入腳本內容:

ipt="/usr/sbin/iptables"           //定義一個環境變量(下面$ipt就等同於/usr/sbin/iptables的絕對路徑了)
$ipt -F                                      //清空之前規則(沒有-t,默認是執行的filter)
$ipt -P INPUT DROP               //定義策略 (INPUT策略 DROP掉)
$ipt -P OUTPUT ACCEPT        //定義策略(OUTPUT策略 ACCEPT接受)
$ipt -P FORWARD ACCEPT    // 定義策略(FORWARD策略 ACCEPT接受)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT           //增加規則(RELATED狀態,ESTABLISHED狀態放行)
$ipt -A INPUT -s 192.168.135.0/24 -p tcp --dport 22 -j ACCEPT              //增加規則(192.168.223網段訪問22端口的數據包放行)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT                                              //增加規則(80端口數據包方行)
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT                                              //增加規則(21端口數據包放行)

完成腳本後保存退出,接著運行這個腳本;

[root@Ask-02 ~]# sh /usr/local/sbin/iptables.sh

最後再來查看以下規則;

[root@Ask-02 ~]# iptables -nvL

恢復默認規則;

[root@Ask-02 ~]# service iptables restart

關於icmp的包比較常見的應用,執行以下命令;

[root@Ask-02 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

這條命令會禁止別人ping不通本機,但是本機可以ping通外網
刪除這條規則命令如下;

[root@Ask-02 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

iptables nat表應用

在日常生活中接觸到的路由器,它的功能就是分享上網,本來一根網線過來(其實只有一個公網IP),通過路由器後,路由器分配一個網段(私網IP),這樣連接路由器的多臺PC或者手機等設備都能連接上網了,而遠端的設備認為你的IP就是那個連接路由器的公網IP。這個路由器的功能其實就是由linux的iptables實現的,而iptables又是通過nat表作用而實現的。
以下舉個例子說明,假設你的兩臺機器,A機器有兩塊網卡ens33和ens33,其中ens33的IP為192.168.135.133,ens35的IP為192.168.100.1,ens33網卡連接了因特網,但ens35沒有連接。現在B機器有個的ens37網卡和A機器的ens37是互通的,如何設置才能讓連接ens35的A機器連接因特網,和192.168.135.133互通呢,操作如下;

[root@Ask-02 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

在此之前如果使用的是虛擬機演戲的話,需要預備幾步工作;
先對A機器進行操作設置,添加網卡

編輯虛擬機設置——選中:網絡適配器——添加:網絡適配器——點擊:下一步——保持默認:NAT模式——點擊: 完成—— 選中:網絡適配器 2——選擇:LAN 區段——添加:自定義名稱——確定——選中剛剛添加的新LAN段 ——確定

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
這裏A機器就設置好了,B機器和A機器設置操作一樣,只是需要先把原本B機器上可以連接的網卡斷掉禁用掉,已方便操作,禁掉操作如下;
技術分享圖片

這裏記住A、B機器選擇的LAN區段一定要一致。

接下來ifconfig查看下各個機器的網卡現象
技術分享圖片
技術分享圖片

給A、B機器新網卡同時設置臨時IP;

[root@Ask-02 ~]# ifconfig ens37 192.168.135.1/24
[root@Ask-01 ~]# ifconfig ens37 192.168.135.100/24

B機器為了更好的演示操作,可以ifdown掉ens33網卡

[root@Ask-01 ~]# ifdown ens33

這樣準備工作就做好了,可以用ping命令檢測以下A、B機器是否能相互ping通內網和外網,如果以上操作正確的話,得到的結果是A機器能ping通外網和內網,而B機器只能ping通內網。

接下來就是讓A機器的ens37設置的能夠連接外網

[root@Ask-02 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward //打開端口轉發
[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE //增加規則

我們可以執行以下命令查看設置結果

[root@Ask-02 ~]# cat /proc/sys/net/ipv4/ip_forward //默認是0端口關閉,1則是打開
1
[root@Ask-02 ~]# iptables -t nat -nvL

技術分享圖片

再來給B機器設置網關以及修改DNS;

[root@Ask-01 ~]# route add default gw 192.168.100.1
[root@Ask-01 ~]# vi /etc/resolv.conf

寫入公共DNS:119.29.29.29保存並退出
這樣B機器技能ping通A機器也能ping通外網了,比如你ping一個A機器可以連接外網IP的地址或則ping百度或者騰訊的地址

遠程訪問B機器
刪掉A機器之前設定的nat表的規則;

[root@Ask-02 ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

重新設定一個nat表的規則(針對進去的數據包)

[root@Ask-02 ~]# iptables -t nat -A PREROUTING -d 192.168.135.133 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

在設定一個nat表的規則(針對回來的數據包)

[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.135.133
給B機器設置網關;
[root@Ask-02 ~]# route add default gw 192.168.100.1

最後在Xshell設置一個遠程登錄到IP地址為192.168.135.133端口為1122的服務器即可。

iptables filter表案例/iptables nat表應用