SNAT轉發(代理內網機器上網)
案例1
內網機器B 通過網關A訪問百度,設置如下:
網關A配置兩個IP
公網ip IP:192.168.1.189/24 內網IP:1.1.1.1/24
開啓路由
寫入配置文件永久生效
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf
強制刷新配置文件,使其生效
sysctl -p
防火牆設置(主要在POSTROUTING鏈上設置)
將流經網關的數據包的源地址改爲192.168.1.189
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189
保存防火牆規則到配置文件,不然下次重啓就失效了。
iptables-save > /etc/sysconfig/iptables
內網機器配置 IP1.1.1.2/24
測試
補充:
1,指定數據包流出的網卡,執行。(流出的網卡必需是配有公網IP的網卡)
iptables -t nat -A POSTROUTING -o ens33 -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189
2,如果網關的IP是一個動態IP, 執行
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE
3,若果要從指定的端口轉發出去,執行
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --to-ports 80-1000
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -p udp -j MASQUERADE --to-ports 80-1000
這是不明智的選擇,指定端口前必需指定使用的協議,所以最好別這樣做。
但是使用隨機端口是可以的,這也是默認的。
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --random
DNAT轉發(將流入網關的數據包發給內網主機處理)
網關A配置兩個IP
公網ip IP:192.168.1.189/24 內網IP:1.1.1.1/24
網關A開啓路由
寫入配置文件永久生效
echo \'net.ipv4.ip_forward=1\' > /etc/sysctl.conf
強制刷新配置文件,使其生效
sysctl -p
網關防火牆設置(主要在PREROUTING鏈上設置)
利用iptables將目的地址爲192.168.1.189的80端口的數據包更改目的地址爲內網機器的IP1.1.1.2,目的端口爲80.
iptables -t nat -A PREROUTING -d 192.168.1.189 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:80
也可以將網關的所有流量轉發到內網主機(並不推薦這樣做,除非特殊情況)
iptables -t nat -A PREROUTING -d 192.168.1.189 -j DNAT --to-destination 1.1.1.2
保存防火牆規則到配置文件,不然下次重啓就失效了。
iptables-save > /etc/sysconfig/iptables
內網機器配置 IP1.1.1.2/24,並安裝httpd服務
在客戶端測試
總結:
1,NAT功能主要是玩的iptables的NAT表。
2,代理內網機器上網,需要設置的是POSTROUTING鏈
3,轉發外網端口流量則是設置PREROUTING鏈