我有一台虚拟机,其网络接口分别为eth0
、eth1
和eth2
。所有这些接口都连接到独立的 ISP 路由器,这些路由器配置了全局静态 IP Public-IP1
,例如Public-IP2
、 和。在内部,每个 ISP 路由器在与路由器连接的相应接口上为虚拟机提供一个 IP ,Public-IP3
例如、和。我已将所有虚拟机接口上的端口 22 转发到 ISP 路由器的公共 IP。Internal-IP1
Internal-IP2
Internal-IP3
现在,当我尝试 时ssh
,Public-IP1
我可以访问虚拟机,但无法访问Public-IP2
和上的虚拟机Public-IP3
。为了进行测试,如果我只启用虚拟机上的一个网络接口,我就可以从相应的公共 IP 登录到虚拟机。例如,如果eth2
虚拟机上只有 接口处于活动状态,那么我就可以通过 访问虚拟Public-IP2
机ssh
。
仅当有多个网络接口处于活动状态时才会发生此问题。在这种情况下,只有第一个接口接受连接,而其他接口仍无法访问。
我想知道是否需要某种配置来实现虚拟机可同时通过所有三个公共 IP 访问的设置。
首先,我尝试设置,netplan
但没有任何效果,尽管服务运行正常且没有错误。配置可在此处获取https://paste.ubuntu.com/p/fxQkJMbtmb/- 准确粘贴自/etc/neplan/network.yaml
接下来,我进行了更新/etc/network/interfaces
,确实可以正确启动界面,但却让我陷入了上述问题。配置可在此处获取 -https://paste.ubuntu.com/p/X5Vsy86z9M/- 准确粘贴自/etc/network/interfaces
/etc/iproute2/rt_tables
我还设置了刚刚列出名称的表格。配置可在此处获取 -https://paste.ubuntu.com/p/4ykJp3W5cK/- 从 /etc/iproute2/rt_tables 准确粘贴
路线列表可在此处查看 -https://pastebin.ubuntu.com/p/b9JNTd9yHW/
答案1
使用 Netplan 配置,您仍指定默认网关所有三个接口你需要选择一作为默认接口。
此配置否定你的路由表并使用 DHCP 来定义您的网关 - 这不起作用,因为这会设置系统范围的默认网关。
我们需要对其进行调整 - 禁用 DHCP 分配的路由,并只让地址单独分配。
您还需要正确设置路由配置,我认为您试图使配置过于复杂。
尝试在您的 netplan 配置中使用此配置:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
routes:
- to: 0.0.0.0/0
via: 192.168.0.1
table: 1000
routing-policy:
- from: 192.168.0.0/24
table: 1000
nameservers:
addresses: [192.168.0.10,192.168.0.20,8.8.8.8,8.8.4.4]
eth1:
dhcp4: true
dhcp4-overrides:
use-routes: false
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
table: 1001
routing-policy:
- from: 192.168.1.0/24
table: 1001
nameservers:
addresses: [8.8.8.8,8.8.4.4]
eth2:
dhcp4: true
dhcp4-overrides:
use-routes: false
routes:
- to: 0.0.0.0/0
via: 192.168.2.1
table: 1002
routing-policy:
- from: 192.168.2.0/24
table: 1002
nameservers:
addresses: [8.8.8.8,8.8.4.4]
不过,这其中也有一些假设,即 (1) 您的网络是 /24,(2) 您想要 DHCP 您的网络,但没有为其他两个接口定义网关(因此 eth0 是您的主接口,而 eth1 和 eth2 只是位于另一个网络上,但不是主网关),以及 (3) 您实际上正在使用 Netplan。