網絡防火牆
NAT(network address translation)網絡地址轉換,又分爲SNAT、DNAT和PNAT
SNAT:NAT轉換時請求報文替換了源地址,響應報文替換了目標地址,所以又爲SNAT
DNAT:當外網用戶訪問局域網內的站點時,網關收到請求報文並將請求報文內的目標地
址和端口更換爲局域網內的地址和端口,局域網內的站點收到請求報文後將響應報文發送
給網關,網關再將響應報文中的源地址替換爲外網地址,將報文發送回外網用戶
PNAT:以http服務爲例,外網用戶要訪問內網的http服務請求的端口是80,而內網的httpd服
務工作在非標準的端口8080上,此時內網的http服務器就需要將發送給本機80端口的數據報文
重新重定向至本機的8080端口,這就叫做PNAT 也叫端口重定向
環境要求:三臺主機
充當路由器的主機開啓ip_forward
echo net.ipv4.ip_forward >> /etc/sysctl.conf
sysctl -p
網絡配置安裝圖中配置,
SNAT:
假設左側NAT網卡連接的部分爲內網,本地公網ip172.16.12.7,172.16.12.6不配置網關
直接在本地pc ping 172.16.12.6是不通的,因爲數據報文到達B,B查看和A不在同一網段,又沒有網關,只能收到來自
A的請求報文沒有迴應
用SNAT解決這種情況
SNAT又分爲二種情況
(1)固定的本地公網ip
iptables -t nat -A POSTROUTING -s 192.168.12.0/24 -j SNAT --to-source 172.16.12.7
數據包可能是從防火牆本身發出或者由內部主機發出,所以由 POSTROUTING彙總後轉發,因此添加在POSTROUTING
(2)撥號上網公網ip不固定,其實這種寫法也適用於固定ip
iptables -t nat -A POSTROUTING -s 192.168.12.0/24 -j MASQUERADE
DNAT:
通過互聯訪問本地公網ip172.16.12.7從而將請求發給本地pc,類似於調度器
iptables -t nat -A PREROUTING -d 172.16.12.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.12.17:80
應該加在PREROUTING上,以httpd爲例,數據報文傳送過來如果經過PREROUTING到達INPUT沒有找到對應服務,
報文直接被丟棄
在B上訪問172.16.12.7,訪問日誌源ip還是172.16.12.6
iptables -t nat -F iptables -t nat -A PREROUTING -d 172.16.12.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.12.17:8080
將本地公網ip80端口映射成內網的8080,一個本地公網ip的80只能映射成1個端口,
PNAT:
外網訪問本地pc80端口,自動轉到8080,需要將httpd服務端口修改爲8080
在本地pc添加端口轉發規則
iptables -t nat -A PREROUTING -d 192.168.12.17 -p tcp --dport 80 -j REDIRECT --to-ports 8080