Debian
IPv4 轉發 (NAT) 僅在將 IPv4 轉發切換為關閉然後打開後才有效
這實際上沒有任何意義,我對為什麼會發生這種情況感到困惑,但請聽我說。
目前我正在使用 Proxmox 6 (Debian) 並創建了一個 NAT,以便 VM/LXC 容器可以在它們之間進行通信 + 與外部世界建立網際網路連接。我也
ufw
用於防火牆的東西。我能夠很好地創建 NAT 連接,VM 可以在它們之間進行通信,太棒了!
…但是網際網路連接根本不起作用,為什麼?我不知道,但我發現如果我這樣做……
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
,但網際網路連接中斷,直到我打開和關閉它!所以我很難過,我不知道為什麼會發生這種情況,雖然有一個骯髒的解決方法(打開和關閉它),但我想知道是否有正確的方法來解決這個問題。
這是一個錯誤
ifupdown2
,dhcp
預設情況下介面不會被 IPv4 轉發,即使您在sysctl.conf
作為一種解決方法,您可以添加
ip-forward 1
或/etc/network/interfaces
手動切換 IPv4 轉發(就像我在問題中所做的那樣)
配置參數手冊說:
ip_forward
這個變數很特殊,它的改變會將所有配置參數重置為預設狀態(RFC1122 用於主機,RFC1812 用於路由器)
所以,最簡單的假設是其他東西 (of
sysctl
) 配置錯誤,只有當它重置為預設值時問題才會消失。