局域网服务器访问外网方案(局域网外网如何访问)
在阿里云、騰訊云等云平臺購買多臺服務器時,出于成本考慮,不會為每一臺服務器配置公網 IP。這樣就帶來一個問題,沒有公網 IP 的服務器就無法訪問外網。本文介紹一種使未綁定公網 IP 的服務器訪問外網的可選方案,前提是購買的多臺服務器中至少有一臺綁定了公網 IP。
在此先介紹下基本原理和基本步驟,對網絡了解得比較多的朋友可能一看就知道怎么回事了。后面再詳細介紹下具體操作流程。
基本原理
使用綁定了公網 IP 的服務器作為代理進行網絡的轉發
基本步驟
假設有兩臺服務器:
- 服務器 master,綁定了公網 IP,可以訪問外網
- 服務器 worker1,未綁定公網 IP,不能訪問外網
操作步驟如下:
- 建立 worker1 到 master 的隧道
- 修改 worker1 的路由表,使用 master 作為路由
- 在 master 上,使用 iptables 對來源為 worker1 的請求做 SNAT 轉換
詳細介紹
本文以云平臺購買的兩個節點實例為例:
- master 節點:內網 IP 192.168.0.197
- worker 節點:內網 IP 192.168.0.196
其中 master 節點綁定了公網 IP,可以訪問外網,worker 節點沒有綁定公網 IP,不能訪問外網。
通過 ip route show 命令查看兩臺主機的路由表,都有一條記錄為:
default via 192.168.0.253 dev eth0
也就是說,這兩臺主機默認都以 192.168.0.253 作為路由轉發請求,因此我們可以大概猜測網絡拓撲如下:
當然真實的網絡拓撲會比較復雜,這里只針對購買的兩臺主機做一個簡化。
現在我們要做的是,worker1 節點通過 master 節點作為代理,獲得訪問外網的能力。
第一步:建立 master 節點到 worker1 節點的隧道
因為兩臺機器在一個內網中,本身是可以互通的,因此我們可以通過默認網卡在兩臺主機間建立隧道。
在master 節點執行如下命令
# 創建一個 IPIP 類型的虛擬網卡
# ip tun add [虛擬網卡名稱] mode ipip remote [對端 IP 地址] local [本機 IP 地址]
ip tunnel add worker1_tunl mode ipip remote 192.168.0.196 local 192.168.0.197
# 啟動剛剛創建的虛擬網卡
ip link set worker1_tunl up
# 為創建的虛擬網卡綁定 IP 地址
# ip add add [本機要綁定的 IP] peer [對端要綁定的 IP 地址] dev [本機要綁定 IP 的虛擬網卡名稱]
ip add add 192.168.3.100 peer 192.168.3.101 dev worker1_tunl
這樣執行 ip addr show 命令可以看到多了如下一個網卡:
可以看到該網卡綁定了 IP:192.168.3.100
同樣的,在 worker1 節點執行如下命令
ip tunnel add master_tunl mode ipip remote 192.168.0.197 local 192.168.0.196
ip link set master_tunl up
ip add add 192.168.3.101 peer 192.168.3.100 dev master_tunl
執行 ip addr show 命令看到 worker1 節點多了如下網卡:
可以看到該網卡綁定了 IP:192.168.3.101
現在我們驗證下隧道是否建立成功,在 master 節點執行 ping 192.168.3.101
同樣在 worker1 節點執行 ping 192.168.3.100
可以看到,兩臺主機已經可以通過設置的 IP 互相訪問了,這樣兩臺主機之間的隧道就建立成功了
第二步:在 worker1 節點修改路由表,讓 master 節點作為 worker1 節點默認路由的網關
我們可以先執行 ip route show 查看下當前的默認路由
該路由顯示 worker1 節點上的默認路由使用 192.168.0.253 作為默認網關
首先,執行 ip route del default 刪除默認網關
然后,執行 ip route add default via 192.168.3.100 dev master_tunl 設置使用 master 節點作為默認網關, 注意這里使用創建的 master_tunl 虛擬網卡作為網絡設備
第三步:在 master 節點通過 iptables 工具,對通過我們創建的隧道過來的請求進行 SNAT 轉換
因為從 worker1 過來的請求源地址為 192.168.3.101,是一個內網地址,如果不進行 nat 轉換的話,外網中的請求是無法到達 worker1 節點的
我們執行如下命令進行 nat 設置
# 我們設置的隧道網段為 192.168.3.0/24, 如下設置會把源地址在網段 192.168.3.0/24 的請求進源地址轉換,
# 源地址會被偽裝成出口網卡的 IP 地址
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE
以上就是所有的步驟了,我們來驗證下
在 worker1 節點執行 ping baidu.com
可以看到 worker1 節點可以訪問外網了
問題
- 按上述步驟設置后仍然無法訪問外網?
檢查 master 節點是否開啟了路由轉發功能,該方案需要轉發節點開啟轉發功能
開啟方式:
- 需要修改 sysctl.conf 文件,配置 net.ipv4.ip_forward = 1
- 執行 sysctl -p 使之生效
總結
以上是生活随笔為你收集整理的局域网服务器访问外网方案(局域网外网如何访问)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以你字结尾的七个字的歌名有哪些
- 下一篇: 关于困难可以克服的句子 克服一切困难的说