iptables實現網路中的防火牆
iptables實現網路防火牆的功能
準備:三臺虛擬機器
Centos7 2 號 ip 192.168.0.105 外網機
Centos5.5 ip 192.168.0.103 192.168.18.131 中間機
Centos7 1號 ip 192.168.18.132 內網機
實驗設定:
Centos7 2號是一臺外網的伺服器。Centos7 1號是內網的一臺主機。而Centos5.5是Centos1號所處的內網中的與外網相連的主機(即防火牆)。192.168.0.*是外網。192.168.18.*是內網。
首先。我們把的網路設定成VMnet0橋接模式。內網機設定成VMnet1僅主機模式。中間機要配兩個網絡卡。點選新增加多一個網路介面卡即可。
這時候在中間機ifconfig一下就能看到有兩個ip地址(127.0.0.1不算。。)
其中192.168.0.103是向著外網的。192.168.18.131是向著內網的
這時候在外網機中要設定一下路由,讓在網段192.168.18.0/24的報文轉給閘道器192.168.0.103。就是中間機的外網ip
注:
route –n 列出路由規則
當然內網機也要設定一下路由,讓在網段192.168.88.0/24的報文轉給閘道器192.168.18.131,就是中間機的內網Ip
設定好後,我們要在中間機中設定流量轉發。
接著我們用外網機ping一下內網機。發現可以Ping通的
內網機中Ping外網機,也可以Ping通
這時,中間機就起到了流量轉發的作用。像一個橋樑讓內網機和外網機能夠正常通訊。接著我們在中間機中設定iptables。讓它真正起到防火牆的作用。因為是流量轉發,所以要操作的鏈是FORWARD鏈。我們先開啟外網機的nginx。
為了安全,我們在規則中新增一個拒絕所有請求的規則。
這時候外網機就不能ping通內網機了。因為中間機設定了規則拒絕所有請求。
假設想讓內網機能訪問外網機的80埠。那我們就要在FORWARD鏈中允許通過80埠的進和出。只需要設定傳送請求方是內網機時,要傳送的目標埠是80,接受迴應方是內網機時,要傳送迴應的埠是80即可。
圖解
此時內網機呵外網機互ping也是ping不通的,但內網機可以請求外網機的80埠。用curl測試。
我們再讓內網機能ping通外網機,但外網機不能ping通內網機。Ping命令是使用icmp協議的,那我們讓
可以發現。一般配置iptables都是雙向的。即要讓內網機的請求能通過,也要讓外網機的迴應能通過。
可以看到,內網機已經可以Ping通外網機了。
而外網機Ping內網機是不行的
這時iptables已經發揮了它防火牆的作用了。
擴充套件:
這樣子雙向性的寫兩遍規則有些麻煩,也不易閱讀。不過所有返回的報文我們可以用一條規則來全部承包,就是我們之前用的state模組。
我們先把之前的迴應的規則給刪了。
接著我們增加一個規則。
再在內網機中請求外網機80埠和ping外網機。也是可以的。