
我有以下拓撲
.───────────────.
┌──────────────────┐ _.─' `──.
│ │ ,─' '─.
│ ISP Router │ Dynamic IP ; :
│ with NAT ├─────────────────────────────────────────────────────────: Internet ;
│ │ ╲ ╱
└─────────┬────────┘ '─. ,─'
│ `──. _.─'
│ 10.0.0.1 `──────┬──────'
│ │
.──────┴────. .─────┴─────.
,─' '─. ┌─────────────────────────┐ ,─' '─.
,' `. │ │ ,' `.
; LAN : Static DHCP┌──┴───┐ ┌──┴───┐ Static IP ; Public Net :
: ;─────────────┤ eth1 │ My Server │ eth0 ├────────────: ;
╲ 10.0.0.0/24 ╱ 10.0.0.5 └──┬───┘ └──┬───┘ 1.2.3.5 ╲ 1.2.3.4/20 ╱
`. ,' │ Debian Buster │ mydomain.com `. ,'
'─. ,─' │ │ '─. ,─'
`─────────' └─────────────────────────┘ `─────────'
由於歷史原因,我的 ISP 使用單獨的網路來提供靜態 IP。這意味著我必須將我的伺服器直接連接到直接暴露於互聯網的特殊連接(在圖中這是eth0
使用 IP 1.2.3.5
)。
但是,我在家裡使用同一台伺服器作為 NAS,因為這是一個完全獨立的網絡,所以我使用不同的介面連接它eth1
,並使用位址建立靜態 DHCP 分配10.0.0.5
。這樣,家庭網路中的其他裝置就可以找到它並存取網路安裝座。
最後,我的網域名稱有一條 DNS 記錄,在本例中mydomain.com
,指向1.2.3.5
.
我遇到了幾個問題:
- 當我嘗試
mydomain.com
從 LAN 存取時,它不起作用。我相信這是因為伺服器從介面獲取資料包eth0
,然後進行回复eth1
,而另一個設備正在丟棄回應,因為它來自不同的 IP。 - 啟動時,伺服器應選擇
1.2.3.4
網路來引導網路流量,以便外部存取可以通過mydomain.com
。但是,由於兩者eth0
都eth1
通過各自的網關訪問互聯網,因此有時會啟動並選擇10.0.0.1
預設網關,然後訪問mydomain.com
不起作用。我相信這與進入eth0
但離開的流量有類似的問題eth1
。
雖然我熟悉基本的網路知識,但我沒有像這樣將伺服器同時連接到多個網路的經驗。理想情況下,我想配置伺服器以便:
- 所有網路流量均透過
eth0
- 所有進入的流量
eth0
均透過eth0
- 所有進入的流量
eth1
均透過eth1
我的伺服器運行 Debian,如果有任何幫助,我將不勝感激。
編輯:所以在停用 eth1 網關並玩了一下之後,tcpdump
我能夠確認流量是從 eth0 進入並離開 eth1。問題是 ISP 不對流向端點的流量進行 NAT 1.2.3.5
,然後伺服器將10.0.0.X
位址識別為位於介面上eth1
。
答案1
這是一個路由問題,可以透過基於來源的路由或策略路由來解決。這涉及兩個路由表,每個路由表對應一個來源位址:
看http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html更多細節。
答案2
我相信這是因為伺服器從介面 eth0 取得資料包,然後透過 eth1 回覆。
不會。有一些例外情況,例如 FTP 不一定與 NAT 相容,因為它們會將您的內部 IP 位址傳遞到連接的另一端,但對於一般情況,您的 NAT 流量將保留在 eth0 上。
檢查日誌以確認用戶端正在出站到 1.2.3.4,且伺服器正在從 NAT 位址 ip.ip.ip.ip 取得連線。
啟動時,伺服器應選擇 1.2.3.4 作為網路以將網路流量定向到,以便透過 mydomain.com 進行外部存取。但是,由於 eth0 和 eth1 都可以透過各自的網關存取互聯網
不要那樣做。在多宿主配置中擁有多個預設網關很少能按照人們的預期發揮作用。只有當兩條路徑都提供對相同網路的存取(例如企業設定中的路由器冗餘/高可用性)時,才應使用非常粗略的多個預設閘道。由於您到網路的 ISP 路由器和您到公共網路的直接連線並不相同,您應該刪除它。 eth0 應該有一個預設路由,eth1 應該有一個到 10.xxx 的路由。
除了無關的預設路由之外,您所描述的是正常的預設操作。請務必尋找上面未描述的其他問題:
- 主機檔案與 DNS 不同(您是否嘗試讓客戶端連接到 10.0.0.5 而不是 1.2.3.4?我喜歡在內部使用技術名稱,例如 webserver1.internalfqdn.com,在外部使用友善名稱,例如www.externalfqdn.com)
- 上面未反映的手動路由表(您是否嘗試將 10.0.0.x 作為路由器通過 10.0.0.5 快捷方式連接到 1.2.3.4? - 這可以工作,但需要額外的配置)
- 路由協定(例如 RIP)(實際上是上述協定的變體,但如果您啟用了 RIP 或其他路由發布,則可能會發布錯誤的路由