標籤:iptables forward
前言
本文旨在複習iptables FORWARD表的相關知識,構建簡易實驗環境,實現通過iptables構建網路防火牆。
iptables實現的防火牆功能:
主機防火牆:服務涵蓋範圍為當前主機
網路防火牆:服務涵蓋範圍為區域網路絡
1. 實驗拓撲
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/84/8D/wKiom1eUeiWRpGlYAABsSsaVTs4431.png-wh_500x0-wm_3-wmp_4-s_526017350.png" title="11.png" alt="wKiom1eUeiWRpGlYAABsSsaVTs4431.png-wh_50" />
2. 主機規劃
主機名稱
|
角色 |
網卡 |
IP地址 |
| node1 |
內網主機 |
vmnet2:eno16777736 |
192.168.11.2/24 |
| node2 |
網關主機 |
vmnet2:eno16777736
橋接:eno33554984 |
192.168.11.1/24
172.16.52.52/16 |
| node3 |
外網主機 |
橋接:eno16777736 |
172.16.52.53/16 |
說明:
node1 添加一條預設閘道指向192.168.11.1
route add default gw 192.168.11.1
node2 要開啟ip_forward功能
sysctl -w net.ipv4.ip_forward=1
內網要與外網通訊node3還要添加一條指向192.168.11.0/24網路路由
route add -net 192.168.11.0/24 gw 172.16.52.52
3.測試實驗環境
node1:開啟httpd服務,測試node3能否訪問
[[email protected] ~]# ping 192.168.11.2PING 192.168.11.2 (192.168.11.2) 56(84) bytes ofdata.64 bytes from 192.168.11.2: icmp_seq=1 ttl=63 time=0.467 ms64 bytes from 192.168.11.2: icmp_seq=2 ttl=63 time=0.502 ms
[[email protected] ~]# curl 192.168.11.2<h1>node1 apache sit<h1
4. 構建iptables網路防火牆
4.1 拒絕所有請求
[[email protected] ~]# iptables -A FORWARD -j DROP
4.2 開放所有ESTABLISED,RELATED的請求
[[email protected] ~]# iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
4.3 開放從內網到外網所有為NEW的請求
[[email protected] ~]# iptables -I FORWARD 2 -s192.168.11.0/24 -m state --state NEW -j ACCEPT
[[email protected] ~]# iptables -vnLChain INPUT (policy ACCEPT 113 packets, 9316 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 37 3108 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 236 ACCEPT all -- * * 192.168.11.0/24 0.0.0.0/0 state NEW 696 58080 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 44 packets, 4040 bytes) pkts bytes target prot opt in out source destination
現在內網是可以訪問外網的,但是外網進來的所有請求都被拒絕
4.4 開放從外到內的21連接埠,22連接埠,23連接埠,80連接埠,狀態為NEW的請求
[[email protected] ~]# iptables -I FORWARD 3 -d 192.168.11.2 -p tcp -m multiport --dports 21:23,80 -m state --state NEW -j ACCEPT
node3:ftp測試訪問:
[[email protected] ~]# lftp 192.168.11.2lftp 192.168.11.2:~> ls `ls‘ at 0 [Making data connection...]
RELATED狀態已經追蹤,21號連接埠已經開放,為什麼還是不能訪問?因為nf_conntrack_ftp 模組沒有載入
載入nf_conntrack_ftp 模組:
[[email protected] ~]# modprobe nf_conntrack_ftp
[[email protected] ~]# lftp 192.168.11.2lftp 192.168.11.2:~> lsdrwxr-xr-x 2 0 0 6 Nov 20 2015 pub
總結:網關防火牆iptables策略做的是白名單,預設拒絕所有,只有開放的服務,外網才能訪問。內網訪問外網沒有特殊情況一般為允許。
本文出自 “Hello,Linux” 部落格,轉載請與作者聯絡!
Iptables番外篇-構建網路防火牆