这确实没有任何意义,我也不知道为什么会发生这种情况,但是请听我说完。
目前我正在使用 Proxmox 6 (Debian),并且我创建了一个 NAT,以便 VM/LXC 容器可以在它们之间进行通信 + 并与外界建立互联网连接。我还将其用于ufw
防火墙。
我能够成功创建 NAT 连接,虚拟机之间可以进行通信,太棒了!
...但网络连接不正常根本,为什么?我不知道,但我发现如果我这样做......
echo 0 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
问题是神奇地已修复。是的,ip_forward
已在 UFW 的配置中启用
#
# Configuration file for setting network variables. Please note these settings
# override /etc/sysctl.conf and /etc/sysctl.d. If you prefer to use
# /etc/sysctl.conf, please adjust IPT_SYSCTL in /etc/default/ufw. See
# Documentation/networking/ip-sysctl.txt in the kernel source code for more
# information.
#
# Uncomment this to allow this host to route packets between interfaces
net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1
如果我重新启动机器并执行cat /proc/sys/net/ipv4/ip_forward
,结果是1
,但互联网连接中断,直到我打开和关闭它!
所以我很困惑,我不知道为什么会发生这种情况,虽然有一个肮脏的解决方法(关闭和打开它),但我想知道是否有正确地来解决此问题。
答案1
这手动的配置ip_forward
参数说:
此变量比较特殊,它的更改会将所有配置参数重置为默认状态(主机为 RFC1122,路由器为 RFC1812)
因此,最简单的假设是其他某些东西(的sysctl
)配置错误,并且只有将其重置为默认值时问题才会消失。
答案2
这是 中的一个错误ifupdown2
,dhcp
默认情况下接口不会进行 IPv4 转发,即使你在sysctl.conf
这是一个关于 spirit 发现这个错误的线程:https://forum.proxmox.com/threads/reloading-ifupdown2-breaks-internet-connectivity-within-containers-vms-until-toggling-ip-forward.78933/#post-349753
作为一种解决方法,您可以添加ip-forward 1
到/etc/network/interfaces
或手动切换 IPv4 转发(就像我在问题中所做的那样)