IPv4 转发 (NAT) 仅在将 IPv4 转发切换为关闭然后打开后才有效

IPv4 转发 (NAT) 仅在将 IPv4 转发切换为关闭然后打开后才有效

这确实没有任何意义,我也不知道为什么会发生这种情况,但是请听我说完。

目前我正在使用 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

这是 中的一个错误ifupdown2dhcp默认情况下接口不会进行 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 转发(就像我在问题中所做的那样)

相关内容