我希望有人能對此有所啟發。我對網路的了解充其量只是基礎知識。
我在兩個網路上有一個 CentOS 伺服器:
- NIC1 位於公用 IP 上,網關設定在交換器 1 上。
- NIC2 設定為 10.10.10.2,交換器 2 上未設定網關。
- 交換器 2 的閘道/路由器是 10.10.10.1。 (華碩路由器)
在 LAN 內,其他 LAN 電腦可以透過開放連接埠存取 10.10.10.2。當從網關/路由器 10.10.10.1 --> 10.10.10.2 設定連接埠轉送規則時,此功能無法運作。網關/路由器 10.10.10.1 --> 到 10.10.10.3 上的連接埠轉送有效(網關設定為 10.10.10.1 的 Windows 電腦)。
是否可以透過 ASUS 路由器 10.10.10.1 從公共網際網路存取 10.10.10.2?
答案1
IP策略路由。
我發現了兩篇與我用來更新 CentOS 伺服器以使第二個 NIC 能夠接收和發送封包的文章相同的文章。也成功更新了另一台具有雙網卡/網關的類似伺服器。
http://jensd.be/468/linux/two-network-cards-rp_filter<-- 我在「最佳解決方案」部分下設定了 IP 策略,並且沒有更改 rp_filter 值。這篇文章還有很好的圖表。
http://www.microhowto.info/howto/ensure_metry_routing_on_a_server_with_multiple_default_gateways.html <-上面的附加範例讓我更清楚。
如果您希望變更永久生效,請按照上面第一個連結上的說明進行操作。
我的例子:
- ip route add 99.88.77.66/24 dev eth0 表 1(範例公用 IP #1)
- ip route add default via 99.88.77.1 表 1(範例公用 IP #1 的閘道)
- ip route add 10.10.10.0/24 dev eth1 table 2(不同網路上的第二個網路卡)
- ip route add default via 10.10.10.1 表2(華碩路由器閘道)
- ip 規則從 99.88.77.66/32 新增表 1 優先權 100
- ip 規則從 10.10.10.4/32 新增表 2 優先權 110
- ip 路由刷新快取
您的 /24 可能會根據您 IP 的子網路遮罩而變更。
答案2
首先我們需要了解為什麼您的設定不起作用。為此,我們需要考慮會發生什麼。
- 連線嘗試來自「有線」網路連線。
- NAT路由器修改目的位址並建立映射表條目。
- 資料包到達您的伺服器,並產生回應。
- 您的伺服器在其路由表中尋找回應的目的地,並將資料包傳送至預設閘道(例如,傳送至「ADSL」網際網路連線)。
- 資料包很可能因具有虛假來源位址而被丟棄。即使它確實傳回給客戶端,它的來源位址也不會與客戶端期望的位址匹配,因此客戶端會將其視為偽造的。
現在我們明白出了什麼問題,我們可以採取一些措施。有幾種選擇。
選項 1 是在伺服器上使用「策略路由」來根據來源 IP 路由流量。這是伺服器支援它的最佳選擇(最近版本的linux 都是這樣做的)。斯泰爾的回答介紹如何在 Linux 伺服器上設定策略路由以根據來源位址進行路由。
方案二是將伺服器的預設閘道指向一個可以做策略路由的盒子。然後該盒子可以根據其來源 IP 正確路由流量。如果伺服器作業系統不支援策略路由,這可能是個有用的解決方案。
選項 3 是使 NAT 盒偽裝為連接埠轉送的流量。我認為這是最後的選擇,因為它隱藏了流量的真實來源位址。