入站流量无法通过服务器的公共 IP 运行

入站流量无法通过服务器的公共 IP 运行

我在我们的 VPC 中的私有网络中有两台服务器,都具有公共 IP 和私有(10.0.0.0/24)子网。

  1. 服务器1配置为NAT(ubuntu 18.04)
  2. 服务器 1 仅具有以下配置,没有其他配置,即sysctl -w net.ipv4.ip_forward=1 && iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  3. 服务器 2 只是一个简单的服务器,它应该使用 NAT 服务器(服务器 1)来处理传出流量。
  4. 两个服务器都使用ens10专用网络和eth0公共 IP接口

我已启用以下网络配置,并路由Server 2至通过以下方式路由传出流量Server 1

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address x.x.x.x #public-ip
  netmask 32

#Private network interface
auto ens10
iface ens10 inet dhcp
   post-up ip route add default via 10.0.0.1

传出流量按预期工作,因为我可以毫无问题地访问互联网,并且我看到的是 NAT IP,而不是服务器 2 的公共 IP。

但是当我尝试使用服务器 2 的公共 IP(即 SSH 或访问其他端口)连接到它时,它没有回复。尽管我只能通过本地网络访问服务器 2。

除此之外,一旦我删除路由,post-up IP route add default via 10.0.0.1我就可以通过它的公共 IP 到达Server 2,但所有传出的流量也会路由到主接口,而这并不是我想要的。

似乎当数据包到达服务器 2 上的 eth0 时,它们会被路由到 ens10 网关 10.0.0.1,也许这就是为什么如果我有上面提到的路由,我就无法回复。

请给我指明正确的方向,我现在有点陷入困境。

提前致谢。

答案1

您需要“分割隧道”:

eth0在接口配置下添加以下规则

auto eth0
iface eth0 inet static
  address x.x.x.x
  netmask 32
  post-up ip rule add iif lo from x.x.x.x table 123
  post-up ip route add y.y.y.y dev eth0 table 123
  post-up ip route add default via y.y.y.y table 123

(yyyy 是网关地址)

通过上述规则和路由表(回复),流量源自主机本身,以公共地址作为源地址将通过 eth0 出去。

注意:添加配置后,您可能需要重新启动整个服务器,因为仅重新启动网络服务可能会失败。

答案2

好吧,我回答我自己的问题。openvpn 服务器推送重定向网关。我在客户端选项中添加了“route-nopull”以使用 VPN 表限制流量。解释如下: 忽略重定向网关

相关内容