歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables 入門教程

iptables 入門教程

日期:2017/2/28 15:33:05   编辑:Linux教程

iptables 中的指令,均需區分大小寫。

ipchains 和 iptables 在語法上的主要的差異,注意如下∶

1. 在 ipchains 中,諸如 input 鏈,是使用小寫的 chains 名,在 iptables 中,要改用大寫 INPUT。

2. 在 iptables 中,要指定規則是欲作用在那一個規則表上(使用 -t 來指定,如 -t nat),若不指定,則預設是作用在 filter 這個表。

3. 在 ipchains 中, -i 是指介面(interface),但在 iptables 中,-i 則是指進入的方向,且多了 -o,代表出去的方向。

4. 在 iptables 中,來源 port 要使用關鍵字 --sport 或 --source-port

5. 在 iptables 中,目的 port 要使用關鍵字 --dport 或 --destination-port

6. 在 iptables 中,"丟棄" 的處置動作,不再使用 DENY 這個 target,改用 DROP。

7. 在 ipchains 的記錄檔功能 -l,已改為目標 -j LOG,並可指定記錄檔的標題。

8. 在 ipchains 中的旗標 -y,在 iptables 中可用 --syn 或 --tcp-flag SYN,ACK,FIN SYN

9. 在 iptables 中,imcp messages 型態,要加上關鍵字 --icmp-type,如∶

iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT

iptables 使用時的樣板

在設定 iptables 的封包過濾規則時,有幾個樣板的動作,若先熟に牽缶塗勺孕刑子茫來死嗤疲芸斓兀塗梢越胝飧鎏斓刂小?/P>

觀察目前的設定

作法如下∶

iptables -L -n

iptablse -t nat -L -n

定義變數

FW_IP="163.26.197.8"

打開核心 forward 功能

作法如下∶

###-----------------------------------------------------###

# 打開 forward 功能

###-----------------------------------------------------###

echo "1" > /proc/sys/net/ipv4/ip_forward

清除所有的規則

一開始要先清除所有的規則,重新開始,以免舊有的規則影響新的設定。作法如下∶

###-----------------------------------------------------###

# 清除先前的設定

###-----------------------------------------------------###

# 清除預設表 filter 中,所有規則鏈中的規則

iptables -F

# 清除預設表 filter 中,使用者自訂鏈中的規則

iptables -X

# 清除mangle表中,所有規則鏈中的規則

iptables -F -t mangle

# 清除mangle表中,使用者自訂鏈中的規則

iptables -t mangle -X

# 清除nat表中,所有規則鏈中的規則

iptables -F -t nat

# 清除nat表中,使用者自訂鏈中的規則

iptables -t nat -X

選定預設的政策

接著,要選定各個不同的規則鏈,預設的政策為何。作法如下∶

預設全部丟棄∶

###-----------------------------------------------------###

# 設定 filter table 的預設政策

###-----------------------------------------------------###

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

或者預設全部接受∶

###-----------------------------------------------------###

# 設定 filter table 的預設政策

###-----------------------------------------------------###

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

各個規則鏈的預設政策可獨立自主的設定,不必受其它鏈的影響。

以下練習,若目標為 DROP,則 policy 請設為 ACCEPT;若目標為 ACCEPT,則 policy 請設為 DROP,如此方可看出效果。

開放某一個介面

作法如下∶

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

注∶IPFW 或 Netfilter 的封包流向,local process 不會經過 FORWARD Chain,

因此 lo 只在 INPUT 及 OUTPUT 二個 chain 作用。

iptables -A INPUT -i eth1 -j ACCEPT

iptables -A OUTPUT -o eth1 -j ACCEPT

iptables -A FORWARD -i eth1 -j ACCEPT

iptables -A FORWARD -o eth1 -j ACCEPT

IP 偽裝

使內部網路的封包經過偽裝之後,使用對外的 eth0 網卡當作代表號,對外連線。作法如下∶

###-----------------------------------------------------###

# 啟動內部對外轉址

###-----------------------------------------------------###

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP

上述指令意指∶把 172.16.0.0/16 這個網段,偽裝成 $FW_IP 出去。

Copyright © Linux教程網 All Rights Reserved