使用NAT轉發實現內網機器訪問外網


局域網內的機器可以通過 NAT 網關來訪問外網。

  • 192.168.128.140
  • 192.168.128.141
  • 192.168.128.142
  • 192.168.128.145(可訪問外網)

上例145機器可以訪問外網。其他局域網機器可以將請求發送給145機器,145機器發出去后,再原路將響應數據返還給局域網機器。這個過程就是 NAT 轉換。

NAT 映射表記錄了轉換關系。

源IP 源端口 NAT 網關機器IP NAT 網關機器端口 目標IP 目標端口
192.168.128.140 8080 192.168.128.145 18080 172.217.27.142 80
  1. 192.168.128.140:8080 [request google.com] --> 192.168.128.145:18080
  2. 192.168.128.145:18080 [request google.com] --> google.com (172.217.27.14:80)
  3. google.com [response] --> 192.168.128.145:18080
  4. 查找映射表得知,18080獲得的數據返還給 192.168.128.140:8080
  5. google.com [response] --> 192.168.128.140:8080

使用 Iptables 實現 NAT 轉換

商用 NAT 轉換通常使用專業的 NAT 路由器或防火牆。簡單可以通過在網關配置 iptables 規則實現 NAT 轉換。

本次實驗:

  1. 192.168.128.140 --> 192.168.128.145
  2. 192.168.128.145 -—> 外網IP

重點是將 192.168.128.140 Gateway 網關重定向到 192.168.128.145 即可。

注意事項:

  1. 外網機器(192.168.128.145)需要支持並配置NAT轉發。
  2. 內網機器需要選擇實際使用的網卡來配置網關,注意DNS映射(/etc/resolv.conf,可修改為8.8.8.8);

檢查外網機器是否已經打開轉發

# 查看是否已經打開,如果值為1,則已經打開
sysctl -a |grep 'net.ipv4.ip_forward'

# 未打開則需要修改配置文件 /etc/sysctl.conf,修改參數為1
net.ipv4.ip_forward = 1

#生效
sysctl -p

外網機器配置 NAT 轉發規則

# 查看防火牆
[root@svr-145 ~]# service iptables status

# 設置NAT轉換
## 單台機器
iptables -t nat -A POSTROUTING -s 192.168.128.140 -j SNAT --to 192.168.128.145
## 單個子網
iptables -t nat -A POSTROUTING -s 192.168.128.0/255.255.255.0  -j SNAT --to 192.168.128.145

內網機器 配置網關

# 設置網關
[root@svr-140 ~]# vim  /etc/sysconfig/network-scripts/ifcfg-eth0

GATEWAY=192.168.128.145

# 重啟網卡
[root@svr-140 ~]# service network restart
[root@svr-140 ~]# ping google.com
PING google.com (172.217.27.142): 56 data bytes
64 bytes from 172.217.27.142: icmp_seq=0 ttl=48 time=55.486 ms
...

例子雖然簡單,但能描述清楚 NAT 轉換的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM