iptables學習01
1.開啟路由轉發功能
臨時開啟
[plain]
echo 1 > /proc/sys/net/ipv4/ip_forward
默認ip_forward值為零, 不允許轉發,改為1就可以轉發了。修改過後就馬上生效,即內核已經打開ip轉發功能。
永久開啟
[plain]
sudo vim /etc/sysctl.conf #永久開啟路由轉發功能
net.ipv4.ip_forward=1
sudo sysctl -p
sudo /etc/init.d/procpsrestart #重啟procps服務
(# sysctl –p)
iptables [-t 表名] 操作符 [規則鏈名] [規則]
對鏈的操作就那麼幾種,
-I 插入
-A 追加
-R 替換
-D 刪除
-L 列表顯示
-F 清除鏈中的所有規則
-P 設置鏈的默認動作ACCEPT REJECT DROP
-Z 計數器清零
-N 定義一個新的規則鏈
-X 刪除定義的規則鏈
-I 將會把規則放在第一行,-A將會放在最後一行
針對規則的操作:
-A 追加
-I 插入
-D 刪除
例子
[plain]
iptables -t filter -A FORWARD -s 10.1.1.11 -d 202.1.1.1 -j ACCEPT
上面的命令意思為:追加一個規則至filter表中的FORWARD鏈尾,允許(-j ACCEPT)源地址為10.1.1.11目的地址為202.1.1.1的數據包通過。其中-t後面跟的是表名,在-A後面跟Chain名,後面的小寫的 -s為源地址,-d為目的地址,-j為處理方向。
在iptables中,默認的表名就是filter,所以這裡可以省略-t filter直接寫成:
[plain]
iptables -A FORWARD -s 10.1.1.11 -d 202.1.1.1 -j ACCEPT
-s 匹配源地址
-d 匹配目的地址
-i 入接口匹配
-o 出接口匹配
--sport 源端口匹配
--dport 目的端口匹配
- j 跳轉,也就是包的方向
其中還有一個!參數,使用!就是取反的意思。
-s這個參數呢就是指定源地址的,如果使用這個參數也就是告訴netfilter,對於符合這樣一個源地址的包怎麼去處理,可以指定某一個單播ip地址,也可以指定一個網絡,如果單個的ip地址其實隱含了一個32位的子網掩碼,比如-s 10.1.1.11 其實就是-s 10.1.1.11/32 同樣我們可以指定不同的掩碼用以實現源網絡地址的規則,比如一個C類地址我們可以用-s 10.1.1.0/24來指定。
-d參數與-s格式一樣。
-i參數是指定入接口的網絡接口,比如我僅僅允許從eth3接口過來的包通過FORWARD鏈,就可以這樣指定 iptables -A FORWARD -i eth3 -j ACCEPT
-o是出接口,與上同
iptables -A INPUT -i lo -j ACCEPT