让 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 等)之外,没有其他配置可能性,任何事情都需要在 Web 服务器上完成,即 debian stretch。

请记住,我大约 10 年只遇到一次网络问题,所以请简单一点。:)

答案1

如果您的 Web 服务器已正确配置为监听 0.0.0.0:80(您可以通过此地址进行检查),ss -l那么您的问题不是 Web 服务器配置问题,而是路由问题。即使您有两个路由,一次也只能检测到一个路由。实现您想要的结果的唯一方法是添加第二个默认路由并使用源策略路由。如果服务器是 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>命令。它应该是off或 模式loose
  • 检查实际路线回复其中ip route get <dst> from <src-address>,目标地址是要求你已经看到了输出tcpdump
  • 使用命令检查防火墙规则iptables-save -c。配置不需要任何额外的纳特规则!

相关内容