使用iptables進行NAT轉發

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鏈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章