您好,登錄后才能下訂單哦!
iptables實現網絡防火墻功能,SNAT以及DNAT功能
一、網絡防火墻的實現
1.環境準備:
虛擬機vmware workstation 11
系統CentOS 7.3
軟件包安裝:yum install httpd vsftpd tcpdump
2.前提條件
2.1各主機正確設置IP地址/子網掩碼
參考設置:
主機A 網卡ens33:10.0.0.110/24 內網客戶端
主機B 網卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 網關服務器
主機C 網卡ens33:172.16.254.52/24 外網服務端
2.2各主機正確設置網關地址
參考設置:
主機A添加默認路由信息
route add default gw 10.0.0.111
主機C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
3.推薦實現步驟
開啟路由轉發功能
在filter表中的FORWARD鏈中實現
4.要注意的問題
1.請求和響應均會經過FORWARD鏈,要注意規則的方向性
2.如果要啟用conntrack機制,建議雙方向的狀態為ESTABLISHED的報文直接放行通過
3.配置規則時可使用tcpdump抓包分析數據報文
步驟:
1.主機A添加默認路由信息 route add default gw 10.0.0.111 route -n 2.主機B開啟核心轉發功能 sysctl -w net.ipv4.ip_forward=1 3.tcpdump抓包測試數據 主機A:ping 172.16.254.52 主機B抓包:tcpdump -i ens33 -nn icmp 測試結果:有10.0.0.110到172.16.254.52的請求報文信息,但沒有回應報文信息 4.主機C使用tcpdump抓包測試數據 tcpdump -i ens33 -nn icmp 測試結果:有回應報文信息,但回應報文信息發往給其他主機,因此要設定網關信息 5.主機C添加路由信息 route add -net 10.0.0.0/24 gw 172.16.252.52 route -n 6.主機A ping請求測試 ping 172.16.254.52 測試結果:ping通 7.主機C啟動httpd服務 systemctl start httpd.service 8.主機A訪問主機C的web頁面 curl http://172.16.254.52 #此時應該正常顯式頁面內容
在上面的基礎上搭建網絡防火墻
方式一: 9.拒絕所有轉發服務 iptables -A FORWARD -j REJECT 10.添加鏈規則:允許本地主機A訪問外網主機C的80端口的服務 iptables -I FORWARD -s 10.0.0.0/24 -p tcp --dport 80 -j ACCEPT 11.添加鏈規則:允許外網主機C的80端口http服務響應本機 iptables -I FORWARD 2 -d 10.0.0.0/24 -p tcp --sport 80 -j ACCEPT 12.主機A測試能否訪問主機C的web頁面 curl http://172.16.254.52#此時應該正常顯式頁面內容 方式二: 9.拒絕所有轉發服務 iptables -A FORWARD -j REJECT 10.放行所有建立連接的數據報文 iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT 11.新建一條鏈規則允許本地主機A訪問外網主機C iptables -I FORWARD 2 -s 10.0.0.0/24 -m state --state NEW -j ACCEPT 12.主機A測試 curl http://172.16.254.52 #此時應該正常顯式頁面內容 13.添加鏈規則:允許外網主機C訪問本地主機A的80端口的http服務 iptables -I FORWARD 3 -d 10.0.0.110 -p tcp --dport 80 -m state --state NEW -j ACCEPT 14.主機C測試 curl http://10.0.0.110 #此時應該正常顯式頁面內容 15.添加鏈規則:允許本機主機A開放更多端口的服務 iptables -R FORWARD 3 -d 10.0.0.110 -p tcp -m multiport --dport 21:23,80 -m state --state NEW -j ACCEPT 16.加載FTP模塊(兩種方式) 1.modprobe nf_conntrack_ftp 2.vi /etc/sysconfig/iptables-config IPTABLES_MODULES="nf_conntrack_ftp" 17.建立FTP訪問鏈規則,開放FTP被動模式 iptables -A FORWARD -d 10.0.0.110 -p tcp -m state --state RELATED -j ACCEPT 18.主機C測試 lftp 10.0.0.110 ssh root@10.0.0.110 curl http://10.0.0.110 #此時測試應該都能正常獲取信息
二、SNAT轉發功能實現
前提條件
各主機正確設置IP地址/子網掩碼
參考設置:
主機A 網卡ens33:10.0.0.110/24 內網客戶端
主機B 網卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 網關服務器
主機C 網卡ens33:172.16.254.52/24 外網服務器
各主機正確設置網關地址
參考設置:
主機A添加默認路由信息
route add default gw 10.0.0.111
主機C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推薦實現步驟
1. 開啟網關主機的路由轉發功能
主機B開啟核心轉發功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墻規則
規則示例
iptables -t nat -I POSTROUTING -j SNAT --to-source 172.16.252.52
3.驗證SNAT結果
主機A curl http://172.16.254.52
主機C tail -f /var/log/httpd/access_log #查看到的ip地址應該為主機B的公網地址
三、DNAT轉發功能的實現
前提條件
各主機正確設置IP地址/子網掩碼
參考設置:
主機A 網卡ens33:10.0.0.110/24 內網服務器
主機B 網卡ens33:10.0.0.111/24 ens37:172.16.252.52/24,網關服務器
主機C 網卡ens33:172.16.254.52/24 外網客戶端
各主機正確設置網關地址
參考設置:
主機A添加默認路由信息
route add default gw 10.0.0.111
主機C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推薦實現步驟
1. 開啟網關主機的路由轉發功能
主機B開啟核心轉發功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墻規則
規則示例
iptables -t nat -I PREROUTING -d 172.16.252.52 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.110
3.驗證DNAT結果(主機C訪問主機B的公網地址顯式的內應該為主機A的web內容)
主機C curl http://172.16.252.52
主機A tail -f /var/log/httpd/access_log #查看到的ip地址應該為外網主機C的地址
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。