Debian

IPv4 轉發 (NAT) 僅在將 IPv4 轉發切換為關閉然後打開後才有效

  • November 14, 2020

這實際上沒有任何意義,我對為什麼會發生這種情況感到困惑,但請聽我說。

目前我正在使用 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,但網際網路連接中斷,直到我打開和關閉它!

所以我很難過,我不知道為什麼會發生這種情況,雖然有一個骯髒的解決方法(打開和關閉它),但我想知道是否有正確的方法來解決這個問題。

這是一個錯誤ifupdown2dhcp預設情況下介面不會被 IPv4 轉發,即使您在sysctl.conf

這是精神發現此錯誤的執行緒:https ://forum.proxmox.com/threads/reloading-ifupdown2-breaks-internet-connectivity-within-containers-vms-until-toggling-ip-forward.78933/#後349753

作為一種解決方法,您可以添加ip-forward 1/etc/network/interfaces手動切換 IPv4 轉發(就像我在問題中所做的那樣)

配置參數手冊說:ip_forward

這個變數很特殊,它的改變會將所有配置參數重置為預設狀態(RFC1122 用於主機,RFC1812 用於路由器)

所以,最簡單的假設是其他東西 (of sysctl) 配置錯誤,只有當它重置為預設值時問題才會消失。

引用自:https://serverfault.com/questions/1041741