IPTABLES 實驗2
實驗大體結構圖
相關概念及公式
源地址轉換: SNAT POSTROUTING
目標地址轉換:DNAT PREROUTING
每次重啟網絡后我們都得首先打開連接轉發功能,echo 1> /proc/sys/net/ipv4/ip_forward
注意此實驗 NODE1和NODE2的eh1位于同一個虛擬網絡VMNET0中
NODE2的eth0和NODE3是橋接方式連接,
也就是可以認為NODE3是外網
NODE1是內網。
NODE1 : IP : 192.168.42.3
NODE2: 都是作為網關接口來設定的,這樣看起來比較簡便,實際中肯定不會這樣了。
NODE3: 當然就是配置10.1.0.0網段的網址啦。
我們啟動NODE1的HTTPD服務并編輯相應的網頁文件即可。
繼續啟動外網NODE3的HTTPD 服務
以上環境搭好,讓我們來測試下NODE1…NODE3之間能不能通過NODE2 相互聯通。
NODE1 ———> NODE3
NODE3———->NODE1
好了能互相PING通說明設置成功,那我們的外網主機NODE3也能獲取NODE1的網頁文件
NOD1 能獲取NODE3的網頁文件
那么讓我們接下來設置NODE2的轉發防火墻。
1.首先打開連接轉發功能,echo 1> /proc/sys/net/ipv4/ip_forward
2.設置放行所有狀態為ESTABLISHED ,RALETED的TCP協議的鏈接。
NODE2首先開啟FTP協議的連接追蹤功能
modprobe nf_conntrack_ftp
添加轉發的默認規則
iptables -A FORWARD -j DROP
這樣我們的內外網的轉發功能就被禁掉了,這里列出結果。
現在我們讓內網服務器能訪問外網
iptables -I FORWARD -s 192.168.42.0/24 -p tcp –dport 80 -j ACCEPT
當然我們這里是tcp協議,icmp協議當然還是不通了??!
內網還是不能出去,這是因為之開放了出去的,響應報文進不來也沒用??!
那我們接下來開放響應報文
iptables -I FORWARD 2 -d 192.168.42.0/24 -p tcp –sport 80 -j ACCEPT
這里我們內網對外網的訪問就沒有問題了!
Iptables -vnL
這個就是我們當前的防火墻的總規則
接下來讓我們刪除第二條規則,根據狀態來做追蹤
iptables -D FOREWARD 2
我們加入根據狀態來放行的轉發規則,這樣我們只要定義請求規則就可以了;
iptables -I FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
現在我們內網的主機想用ssh連接到外網怎么辦?
很簡單我們把第二條規則改下就可以了,我們只放行內網鏈接狀態為NEW的連接!
我們在NEW方向加了狀態
iptables -R FORWARD 2 -s 192.168.42.0/24 -p tcp -m multiport –dports 80,21,22,23,139,445 -m state –state NEW -j ACCEPT
這就是改動后的規則
這里的內網對外網curl和ssh遠程登陸都沒有問題
這里的ssh可能會稍微時間長點因為每個包都得經過FORWARD 鏈進行過濾,所以速度當然就慢點了,臺式機可能會快點。
這里我們啟動NODE3的smb,vsftpd服務,telnet服務看看NODE1上面什么反應!
這里我們從NODE1上進行訪問NODE3的samba服務
接下來我們測試下NODE1連接NODE3的ftp服務有沒有問題
這里看出也是沒有任何問題的!??!
注意:以后我們工作時在修改IPTABLES時定義一個自動20分鐘運行的守護進程,讓其清空防火墻,這樣就能避免我們添加防火墻失敗的問題,添加成功我們就刪除這個自定義腳本;
原創文章,作者:sjfbjs,如若轉載,請注明出處:http://www.www58058.com/53567