在 Proxmox 服务器(Debian)中,我更改了我的网络配置:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto enp0s31f6
iface enp0s31f6 inet static
address 88.99.69.241
netmask 255.255.255.192
gateway 88.99.69.193
up route add -net 88.99.69.192 netmask 255.255.255.192 gw 88.99.69.193 dev enp0s31f6
post-up echo 1 > /proc/sys/net/ipv4/conf/enp0s31f6/proxy_arp
# route 88.99.69.192/26 via 88.99.69.193
auto vmbr1
iface vmbr1 inet static
address 10.3.5.1
netmask 255.255.255.0
bridge-ports none
bridge-stp off
bridge-fd 0
更改为:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto enp0s31f6
iface enp0s31f6 inet static
address 66.xx.xx.241
netmask 255.255.255.192
gateway 66.xx.xx.193
up route add -net 66.xx.xx.192 netmask 255.255.255.192 gw 66.xx.xx.193 dev enp0s31f6
post-up echo 1 > /proc/sys/net/ipv4/conf/enp0s31f6/proxy_arp
# route 66.xx.xx.192/26 via 66.xx.xx.193
auto vmbr0
iface vmbr0 inet static
address 66.xx.xx.241
netmask 255.255.255.255
pointopoint 66.xx.xx.193
gateway 66.xx.xx.193
bridge_ports enp0s31f6
bridge_stp off
bridge_fd 1
bridge_hello 2
bridge_maxage 12
auto vmbr1
iface vmbr1 inet static
address 10.3.5.1
netmask 255.255.255.0
bridge-ports none
bridge-stp off
bridge-fd 0
我的服务器在 Hetzner 上,我想将我的附加 IP 桥接到我的一台虚拟机上
重启后,我无法 ping 通 66.xx.xx.241,有人能解释一下为什么我无法再连接吗?在桥接网络中,gw 应该在 vmbr0 中定义吗?
我根据以下情况更改了网络配置本教程来自 hetzner:
答案1
您混淆了主接口和桥接接口。使用桥接接口时,此接口应获取 IP 地址,而主接口则被桥接,这意味着它也不能拥有此地址。
因此,您有一个名为 的第一个接口enp0s31f6
。此接口桥接到您的网桥中,因此无法直接配置,而是在网桥配置中manual
使用 : 关键字来实现此目的:
auto enp0s31f6
iface enp0s31f6 inet manual
然后,在你的桥接设置上:
auto vmbr0
iface vmbr0 inet static
address 66.xx.xx.241
netmask 255.255.255.255
pointopoint 66.xx.xx.193
gateway 66.xx.xx.193
bridge_ports enp0s31f6
bridge_stp off
bridge_fd 1
bridge_hello 2
bridge_maxage 12
不能有两个接口共享同一个 IP 地址。
其次,您的route
声明无效,因为它创建的路由根据地址和网络掩码配置已经存在。事实上,网络 66.xx.xx.192/26 是直接连接的(第 2 层、以太网和 ARP 解析),不需要任何路由(第 3 层)额外配置。
关于路由,由于数据包在现实世界中被您的enp0s31f6
接口拦截,但被传输到您的vmbr0
,您需要将以下行写入您的/etc/sysctl.conf
文件:
net.ipv4.ip_forward=1
您将需要启动命令sysctl -p
来强制直接考虑这条新线路(无需等待下次重启)。
我不太确定您是否需要激活 arp 代理(行post-up echo 1 > /proc/sys/net/ipv4/conf/enp0s31f6/proxy_arp
)。基本上,您正在做的是 ARP 代理;但是它可能由pointopoint
行隐式实现。
让我们知道它是否有助于解决您的问题;
编辑 仍然可以使用桥接模式。您可以像平常一样配置外部接口,并配置一个 IP 地址在 1918 范围内的桥接器。然后 ip_forward=1。
答案2
是的,这很简单,在很多地方都有涉及:桥接接口成员不应该有 IP,但桥接本身应该有。