Ubuntu
如何使用1個ip接收連接,另一個建立連接
我有一個有 2 個可用 IP 地址的 VPS。我想使用其中一個來接收連接,並在伺服器建立連接時使用另一個。因此,如果連接的起始者不是 VPS,它將使用 IP 地址 A,如果是,它將使用 IP 地址 B。
VPS 正在執行 Ubuntu 16.04
我該怎麼做呢?謝謝!
當 Linux 建立傳出連接時,它首先嘗試使用在創建套接字時請求的任何地址應用程序。如果它沒有請求任何特定的(或請求的),它會在路線中
0.0.0.0
尋找提示。您可以設置一條路由以向您分配的任何地址提供此類提示,這是通過命令
src
關鍵字完成的ip
:ip route add DESTINATION via GATEWAY src PREFERRED_SRC_ADDRESS
例如,在我的機器上,我有兩個地址,
192.168.168.4/24
並且192.168.168.6/24
(為清楚起見,輸出被剝離):muon ~ # ip addr ... 3: br0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 ... state UP ... inet 192.168.168.4/24 brd 192.168.168.255 scope global br0 inet 192.168.168.6/24 scope global secondary br0 ...
要
192.168.168.6
用於傳出路由,我必須告訴所有程序明確綁定到它,例如:ssh -b 192.168.168.6 dst-address
或設置我的預設路由,以便預設選擇它:
ip route add default via 192.168.168.1 src 192.168.168.6
(預設路由預設沒有提示;在這種情況下系統使用“已連接”提示。)還要注意,一些 src 已經在“已連接”路由中,由
ip address add
命令生成並由網路遮罩定義:192.168.168.0/24 dev br0 proto kernel scope link src 192.168.168.4
那是因為
.4
地址在這個系統上是“主要的”,然後.6
被添加。這兩條路由是我在主表中的全部,所以現在我將連接.4
到同一 LAN 中的機器(當我通過“已連接”路由時)和從.6
它外部的機器(當我通過“預設“ 路線)。我也可以更新這條路線以.6
在其中使用地址:ip route change 192.168.168.0/24 dev br0 src 192.168.168.6
現在要使用
.4
地址,我必須明確地綁定到它,例如,使用ssh -b
,或設置帶有“更長前綴”的附加路由到我想使用.4
地址的某些系統。所有時間機器都可以訪問到兩個 IP 地址的傳入連接。如果我希望它只接受與其中一個的連接,我可以簡單地阻止防火牆中不需要的連接。