iptables filter表案例
案列:只針對filter表,預設策略INPUT鏈DROP,其他兩個鏈ACCEPT,然後針對192.168.133.0/24開通22端口,對所有網段開放80端口,對所有網段開放21端口。
#! /bin/bash
ipt="/usr/sbin/iptables" //命令的絕對路徑,防止因為環境變量的問題導致命令無法執行
$ipt -F //清空規則
$ipt -P INPUT DROP //默認策略
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //目的是為了讓通信更加順利
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
icmp示例,這裏–icmp-type選項要跟-p icmp一起使用,後面指定類型編號。這個8指的是能在本機ping通其他機器,而其他機器不能ping通本機
iptables -I INPUT -p icmp –icmp-type 8 -j DROP
iptables nat表應用
nat表應用
A機器兩塊網卡ens37(192.168.202.129)、ens33(192.168.100.1),ens37可以上外網,ens33僅僅是內部網絡,B機器只有ens33(192.168.100.100),和A機器ens33可以通信互聯。
給兩臺虛擬機添加一塊新的網卡
A和B給新的網卡設置為LAN區段
添加自定義名字
A和B都選擇LAN區段
A機器命令行添加IP(重啟後會失效,如果想永久生效就配置文件)
給另一臺B機器的內網網卡添加ip(ifconfig ens33 192.168.100.100/24)
兩臺機器的內網網卡可以互相ping通,此時A和B可以互相通信,但是A可以上網,B不可以上網。
A機器上打開路由轉發 echo “1”>/proc/sys/net/ipv4/ip_forward。
這個文件的內容默認是0,要想使用nat表,網絡的轉發,就必須修改內核參數,所以需要把該文件內容改為1。
A上執行添加規則iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens37 -j MASQUERADE,這條規則就是讓192.168.100.0這個網段可以上網
B機器上設置網關為192.168.100.1。命令:route add default gw 192.168.100.1。設置完後B機器可以ping通A機器的公網IP即ens37網卡的IP地址
給B機器設置DNS。編輯DNS配置文件/etc/resolv.conf。在配置文件中添加一行nameserver 119.29.29.29。保存退出後就可以上網了,如果不行,可以用命令:systemctl stop iptables關閉防火墻,因為防火墻會幹擾。
需求2:C機器只能和A通信,讓C機器可以直接連通B機器的22端口
A上打開路由轉發echo “1”>/ proc/sys/net/ipv4/ip_forward,因為上面已經做過,所以可以不做。
A機器上執行iptables -t nat -A PREROUTING -d 192.168.202.129 -p tcp –dport 1122 -j DNAT –to 192.168.100.100:22,規則的意思就是比如windows本機IP是192.168.202.1,它的目標IP是192.168.202.129,目標端口是1122,然後端口轉發,把它轉發到IP為192.168.100.100的22端口,這是進去的包。
執行之前先把之前的規則清除,以免影響,iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens37 -j MASQUERADE,用D參數刪除。
A機器上執行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT –to 192.168.202.129,從192.168.100.100回來的包經過A機器再做一個SNAT操作,把目標地址改成192.168.202.129,這個目標地址是在我們A機器上往外發出去的源IP,回到window機器上時才能識別,知道是哪個機器的過來的。
給B機器加上網關。命令:route add default gw 192.168.100.1。上面已經做過,所以可以省略。弄完之後原本不可以遠程連接的B機器,現在可以通過遠程連接A機器的公網IP:192.168.202.129的1122端口來連接B機器。
iptables filter表案例