Iptables 命令
iptables的命令格式較為復(fù)雜柬祠,一般的格式如下:
iptables [-t 表] -命令 匹配 操作
說明
- -t 表 表選項用于指定命令應(yīng)用于哪個iptables內(nèi)置表。
- 命令 命令選項用于指定iptables的執(zhí)行方式折联,包括插入規(guī)則织阳,刪除規(guī)則和添加規(guī)則辆布,如下表所示
-P --policy <鏈名> 定義默認策略
-L --list <鏈名> 查看iptables規(guī)則列表
-A --append <鏈名> 在規(guī)則列表的最后增加1條規(guī)則
-I --insert <鏈名> 在指定的位置插入1條規(guī)則
-D --delete <鏈名> 從規(guī)則列表中刪除1條規(guī)則
-R --replace <鏈名> 替換規(guī)則列表中的某條規(guī)則
-F --flush <鏈名> 刪除表中所有規(guī)則
-Z --zero <鏈名> 將表中數(shù)據(jù)包計數(shù)器和流量計數(shù)器歸零
-X --delete-chain <鏈名> 刪除自定義鏈
-v --verbose <鏈名> 與-L他命令一起使用顯示更多更詳細的信息
- 匹配規(guī)則
匹配選項指定數(shù)據(jù)包與規(guī)則匹配所具有的特征企软,包括源地址姑廉,目的地址,傳輸協(xié)議和端口號悔政,如下表所示
-i --in-interface 網(wǎng)絡(luò)接口名> 指定數(shù)據(jù)包從哪個網(wǎng)絡(luò)接口進入晚吞,
-o --out-interface 網(wǎng)絡(luò)接口名> 指定數(shù)據(jù)包從哪個網(wǎng)絡(luò)接口輸出
-p ---proto 協(xié)議類型 指定數(shù)據(jù)包匹配的協(xié)議,如TCP谋国、UDP和ICMP等
-s --source 源地址或子網(wǎng)> 指定數(shù)據(jù)包匹配的源地址
--sport 源端口號> 指定數(shù)據(jù)包匹配的源端口號
--dport 目的端口號> 指定數(shù)據(jù)包匹配的目的端口號
-m --match 匹配的模塊 指定數(shù)據(jù)包規(guī)則所使用的過濾模塊
動作
前面我們說過iptables處理動作除了 ACCEPT槽地、REJECT、DROP、REDIRECT 捌蚊、MASQUERADE 以外集畅,還多出 LOG、ULOG缅糟、DNAT挺智、RETURN、TOS窗宦、SNAT赦颇、MIRROR、QUEUE赴涵、TTL媒怯、MARK等。我們只說明其中最常用的動作:
REJECT 攔阻該數(shù)據(jù)包髓窜,并返回數(shù)據(jù)包通知對方扇苞,可以返回的數(shù)據(jù)包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(這個數(shù)據(jù)包包會要求對方關(guān)閉聯(lián)機)寄纵,進行完此處理動作后鳖敷,將不再比對其它規(guī)則,直接中斷過濾程序擂啥。 范例如下:
iptables -A INPUT -p TCP --dport 22 -j REJECT --reject-with ICMP echo-reply
-DROP 丟棄數(shù)據(jù)包不予處理哄陶,進行完此處理動作后,將不再比對其它規(guī)則哺壶,直接中斷過濾程序屋吨。
REDIRECT 將封包重新導(dǎo)向到另一個端口(PNAT),進行完此處理動作后山宾,將會繼續(xù)比對其它規(guī)則至扰。這個功能可以用來實作透明代理 或用來保護web 服務(wù)器。例如:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8081
MASQUERADE 改寫封包來源IP為防火墻的IP资锰,可以指定port 對應(yīng)的范圍敢课,進行完此處理動作后,直接跳往下一個規(guī)則鏈(mangle:postrouting)绷杜。這個功能與 SNAT 略有不同直秆,當進行IP 偽裝時,不需指定要偽裝成哪個 IP鞭盟,IP 會從網(wǎng)卡直接讀取, 范例如下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 21000-31000
LOG 將數(shù)據(jù)包相關(guān)信息紀錄在 /var/log 中圾结,詳細位置請查閱 /etc/syslog.conf 配置文件,進行完此處理動作后齿诉,將會繼續(xù)比對其它規(guī)則筝野。例如:
iptables -A INPUT -p tcp -j LOG --log-prefix "input packet"
SNAT 改寫封包來源 IP 為某特定 IP 或 IP 范圍晌姚,可以指定 port 對應(yīng)的范圍,進行完此處理動作后歇竟,將直接跳往下一個規(guī)則煉(mangle:postrouting)挥唠。范例如下:
iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 192.168.10.15-192.168.10.160:2100-3200
DNAT 改寫數(shù)據(jù)包包目的地 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應(yīng)的范圍焕议,進行完此處理動作后宝磨,將會直接跳往下一個規(guī)則鏈(filter:input 或 filter:forward)。范例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.10.1-192.168.10.10:80-100
MIRROR 鏡像數(shù)據(jù)包号坡,也就是將來源 IP與目的地IP對調(diào)后懊烤,將數(shù)據(jù)包返回梯醒,進行完此處理動作后宽堆,將會中斷過濾程序。
QUEUE 中斷過濾程序茸习,將封包放入隊列畜隶,交給其它程序處理。透過自行開發(fā)的處理程序号胚,可以進行其它應(yīng)用籽慢,例如:計算聯(lián)機費用.......等。
RETURN 結(jié)束在目前規(guī)則鏈中的過濾程序猫胁,返回主規(guī)則鏈繼續(xù)過濾箱亿,如果把自訂規(guī)則煉看成是一個子程序,那么這個動作弃秆,就相當于提早結(jié)束子程序并返回到主程序中届惋。
MARK 將封包標上某個代號,以便提供作為后續(xù)過濾的條件判斷依據(jù)菠赚,進行完此處理動作后脑豹,將會繼續(xù)比對其它規(guī)則。范例如下:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 22