實機設定

  1. 使用選項命令,可以完成 iptables 所有的設定,不過若沒有執行 /etc/init.d/iptables save,重新開機後還是會回到預設值,執行 save 的目的是將目前防火牆設定寫入 /etc/sysconfig/iptables。所以設定防火牆可以直接編輯此檔。
  2. INPUT 鏈範例:利用 -m 選項來載入模組 state 。state 模塊能夠檢視一個封包並判斷它的狀態是 NEW、ESTABLISHED 抑或 RELATED。NEW 指進入的封包屬於不是由主機起始的新增連線。ESTABLISHED 及 RELATED 指進入的封包隸屬於一條現存的連線,或者與現存的連線有關係。-m tcp--match tcp 載入 tcp 模組,這個動作已包含在 -p tcp 中,不過明確的指明載入 tcp 模組也無害。
    [root@kvm8 ~]# vim /etc/sysconfig/iptables
    ............
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 ! -s 192.168.122.0/24 -j REJECT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 5000:5005 -j ACCEPT
    ............
    
    1. 不是來自 192.168.122.0/24 通過 tcp 連接埠 21 連線的封包都 REJECT。
    2. 因 iptables 過濾規則是有順序的檢查,在前一條已拒絕不是來自 192.168.122.0/24 的封包,所以這一條只要是通過 tcp 連接埠 21 連線的封包都接受。
    3. 只要是通過 tcp 連接埠 5000 到 5005 連線的封包都接受。
  3. FORWARD 鏈範例:做為 NAT 轉傳。
    [root@kvm8 ~]# vim /etc/sysconfig/iptables
    ............
    -A FORWARD -i eth0 -j ACCEPT 
    -A FORWARD -d 192.168.1.0/24 -o eth0 -j ACCEPT 
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
    ............
    
    1. -i 選項表示 interface「介面」,來自網卡 eth0 的封包都接受並轉傳。
    2. 目的 IP 為 192.168.1.0/24,送到 eth0 網卡的封包都接受並轉傳。
    3. 不符合以上兩條規則的封包,都拒絕轉傳。
  4. POSTROUTING 鏈範例:做為 NAT,從介面 eth1 送出的封包,都以介面 eth1 的 IP 偽裝。
    [root@kvm8 ~]# vim /etc/sysconfig/iptables
    ............
    -A POSTROUTING -o eth1 -j MASQUERADE 
    ............
    
  5. 防火牆重新啟動
    [root@kvm8 ~]# /etc/init.d/iptables restart
    
  6. 開機啟動防火牆
    [root@kvm8 ~]# chkconfig iptables on