讓 Debian Stretch Webserver 在兩個網卡上回應

讓 Debian Stretch Webserver 在兩個網卡上回應

我有網路伺服器與兩張網卡在各個子網路中192.168.188.x192.168.198.x。此網路伺服器連接到 2 個不同的路由器(192.168.188.1 和 192.168.198.1),並透過連接埠轉送將連接埠 80 直接連接到網際網路(每個路由器也有自己的公用 IP 位址)。

     (external ip)                Portforwarding:80                   (external ip)
    ---[ROUTER]----                                                  ---[ROUTER]----
     192.168.188.1               Router internal IP                   192.168.198.1        
           |                                                               |
           |                                                               |
           |                                                               |
           |                                                               |
           +------- 192.168.188.11:80 [WEBSERVER] 192.168.198.11:80 -------+

我喜歡在連接埠 80 上對伺服器做出反應兩個都子網。不幸的是,它在預設配置中僅響應設定為預設網關的路由器,這是非常合乎邏輯的。但我需要執行它以將資料包發送回資料包來自的介面。如何實現這項目標?除了路由器上的連接埠轉送之外,沒有進一步的設定可能性,例如對於 nat 等,任何事情都需要在網路伺服器上完成,這是 debianstretch。

請記住,我大約十年才遇到一次網路問題,所以請簡單一點。 :)

答案1

如果您的網路伺服器已正確設定為偵聽 0.0.0.0:80,您可以透過它進行檢查,ss -l那麼您的問題不是網路伺服器設定問題,而是路由問題。即使有兩條路線,一次也只能偵測到一條路線。實現您想要的唯一方法是新增第二個預設路由並使用來源策略路由。如果伺服器是Linux,則可以透過iptables 來完成。嘗試或者

答案2

此解決方案需要複雜的路由配置。

  1. Web 伺服器應該監聽(192.168.188.11192.168.198.11)位址或0.0.0.0位址,這意味著什麼all addresses。用命令檢查一下ss -tlnp sport == :80

  2. 為每個路由建立單獨的路由表

ip route add 192.168.188.0/24 dev <iface1> table 1
ip route add 0/0 via 192.168.118.1 dev <iface1> table 1

ip route add 192.168.198.0/24 dev <iface2> table 2
ip route add 0/0 via 192.168.198.1 dev <iface2> table 2
  1. 設定路由規則以透過收到請求的相同介面路由回覆:
ip rule add from 192.168.188.11 lookup 1 pref 1000
ip rule add from 192.168.198.11 lookup 2 pref 2000
  1. 故障排除:
  • 使用tcpdump -ni <iface> 'tcp port 80'來嗅探流量。至少你應該看到來自外部的http請求。
  • 檢查路線要求ip route get <dst> from <src> iif <iface>。它應該顯示local路線。如果顯示其他內容,請檢查rp_filterwithip netconf show dev <iface>指令。它應該是offor 模式loose
  • 檢查實際路線回覆其中ip route get <dst> from <src-address>,目標位址是來源位址要求你已經在tcpdump輸出中看到了。
  • 使用命令檢查防火牆規則iptables-save -c。配置不需要任何額外的納特規則!

相關內容