1. 程式人生 > >iptables實現網路中的防火牆

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外網機。也是可以的。