今天又學習了一下iptables,作一點總結來方便之後查閱。html
Netfilter(網絡過濾器)是Linux操做系統核心層內部的一個數據包處理模塊,主要負責數據包的攔截和轉發,而iptables是NetFilter的一種應用化,爲了方便定義規則和配置。linux
iptables工做在linux的內核空間,它經過內核空間的接口與用戶空間通訊,控制數據包在內核空間上的接口(就是常常說到的port)之間轉發。bash
這是一條典型的iptables的配置語句,我從這裏開始發散思惟:服務器
iptables -t nat -A PREROUTING -d 172.30.1.8 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.25
這條語句的功能是:在PREROUTING鏈的nat表上添加一條規則未來自172.30.1.8的80端口的請求轉發到192.168.9.25。網絡
語句指定了七個部分:鏈,表,源,目的,協議,端口和動做,我就從之七個方面分別記錄。tcp
一、鏈(chain)post
iptables共有五個規則鏈: 學習
iptables -F PREROUTING -t nat iptables -D POSTROUTING 1 -t nat
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
六、端口ui
--sport num: 指定源端口spa
--dport num: 指定目的端口
--dport XX-XX:指定多個端口,不能指定多個非連續端口
開放服務器的3306和90端口:
iptables -A INPUT -p tcp -m multiport --dport 3306,90 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sport 3306,90 -j ACCEPT
七、動做
-j ACTION: 對數據包的處理
常見的ACTION:
iptables -I PREROUTING 1 -t nat -p tcp --dport 90 -j REDIRECT --to-ports 80
將經過端口79-80的數據包改寫源 IP:
iptables -A POSTROUTING -t nat -p tcp -j MASQUERADE --to-ports 79-81
將的80端口重定向到百度:
iptables -A PREROUTING -t nat -p tcp -d 119.29.23.152 --dport 80 -j DNAT --to-destination 14.215.177.38:80 iptables -A postrouting -t nat -p tcp -d 14.215.177.38 --dport 80 -j SNAT --to-source 119.29.23.152 echo 1 > /proc/sys/net/ipv4/ip_forward #開啓服務器的轉發功能
還有一些其餘的匹配選項:
簡單的iptables規則基本介紹完了,下面是查看命令:
iptables -L -n #以數字的方式顯示ip,它會將ip直接顯示出來,若是不加-n,則會將ip反向解析成主機名 iptables -L -v #顯示詳細信息 iptables -L -vv iptables -L -vvv #越多越詳細 iptables -L -x #在計數器上顯示精確值,不作單位換算 iptables -L --line-numbers #顯示規則的行號 iptables -L -t nat #顯示nat表全部的信息
另外,咱們在終端編輯的iptables規則只是臨時生效,要想在服務器重啓後還能生效,須要將規則保存在配置文件/etc/sysconfig/iptables中,而且etc/sysconfig/iptables中的規則都是永久生效的。執行service iptables save命令,會使當前定義的規則保存到/etc/sysconfig/iptables中。若想將當前規則備份起來,備份iptabales規則命令是iptables-save > /etc/sysconfig/iptables.bak。若想要使用本身寫的iptables配置文件或者手動加載備份的iptables配置文件,使用iptables-restore < /etc/sysconfig/iptables.bak命令。
纔開始寫博客,文采很差思惟凌亂格局糾結分類糟糕,若有錯誤的地方,或者有什麼提升的地方,歡迎批評指正。另外,如今的我確定對技術瞭解不深,從此有什麼完善的地方,我會對博客進行補充的。