網路拓撲如下:hosta/b/c處於同乙個區域網:
hosta:
eth0:192.168.0.2
----------------------
hostb:
eth0:192.168.0.1
eth1:10.0.0.1
----------------------
hostc:
eth0:192.168.0.3
eth1:10.0.0.3
----------------------
hosta-route
10.0.0.0/24(-net) 192.168.0.1(gw)
---------------------
hostb-iptables
forward(drop)
-a forward -d 10.0.0.3 -j accept
---------------------
在hosta上ping 10.0.0.3竟然通了,說明hostb的規則沒有起作用?或者說iptables有問題?其實不是的,資料可以從10.0.0.1也就是hostb走,但是回應卻不一定非要原路返回啊,更何況三颱機器在乙個交換機上插著,因此資料到達hostc之後,回應時根據源位址hosta的eth0查詢路由,發現和自己在乙個網路中,於是直接從eth0出去了,而不是原路回去,因此可以ping通,如果想使得事情更不混亂一點,只需要在hostb上配置一條nat即可:
-a postrouting -o eth1 -j masquerade
這樣資料就不能不原路返回了,肯定ping不通了,但是加上下面一條規則就又通了:
-a input -m state --state established -j accept
上述的網路拓撲非常糟糕,在共享式區域網路中配置不同的子網會帶來很多隱含的問題,查起來很困難,需要你對網路十分精通才可以,因此最好不要這麼配置。
established狀態的連線是乙個雙向有資料的連線,用於方便配置防火牆。由於linux的iptables中的filter表是基於包而非連線的,如果你只在乙個方向允許資料通過的話,該資料報所屬連線的回應資料將被阻止在防火牆,因此需要配置乙個反方向允許的策略,如此一來,整個filter表就會擴大一倍。實際上只需要配置下面一條策略就可以了:
-a input -m state --state established -j accept
原理是--state是基於ip_conntrack的,而conntrack在filter表的策略之前起作用,而conntrack只要看見回應的資料報就會將此資料報所屬的連線狀態設定為established,從而使得上述配置生效。總之,上述配置需要第乙個正向資料報可以通過防火牆,之後的兩個方向的資料報自然也就都可以通過了。
Linux 網路配置 防火牆 YUM
目標 1 網路的配置 2 防火牆的設定 3 光碟自動掛載 4 本地yum源的配置 b 1 網路的配置 b 一 新增臨時ip ifconfig eth0 第乙個ip位址 netmask 子網掩碼 up ifconfig eth0 0 第二個ip位址 netmask 子網掩碼 up 二 檢視networ...
linux網路及防火牆配置
etc sysconfig network 包括主機基本網路資訊,用於系統啟動 etc sysconfig network script 此目錄下是系統啟動最初始化網路的資訊 etc sysconfig network script ifcfg eth0 網路配置資訊 etc xinetd.conf...
Linux防火牆配置
重啟後生效 開啟 chkconfig iptables on 關閉 chkconfig iptables off 2 即時生效,重啟後失效 開啟 service iptables start 關閉 service iptables stop 需要說明的是對於linux下的其它服務都可以用以上命令執行...