必须启用内核ip_forward参数为1才能使linux主机具备路由器能力;仅检查配置文件无效,唯一可信依据是cat /proc/sys/net/ipv4/ip_forward返回严格纯数字1,临时启用用sysctl -w或echo 1 >,永久启用需写入/etc/sysctl.d/并执行sysctl --system。

要在Linux系统中让主机具备路由器能力,必须启用内核的数据包转发功能,否则所有非本机目的IP的数据包都会被直接丢弃,无论你配置了多少iptables规则或路由条目。
确认当前转发状态
先检查内核运行时的实际值,不要依赖配置文件内容:cat /proc/sys/net/ipv4/ip_forward
返回【1】表示已开启;返回【0】或任何其他输出(包括空、报错、带空格的"1 ")都代表未生效。这是唯一可信的判断依据。
临时启用(立即生效,重启后失效)
方法一:使用sysctl命令写入
sudo sysctl -w net.ipv4.ip_forward=1
方法二:直接写入proc接口(效果等同,但更底层)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
这一步操作起来很简单,5秒内即刻生效,适合调试或临时搭建测试网关。注意:执行后必须再运行一次cat /proc/sys/net/ipv4/ip_forward验证输出是否为严格纯数字1。
永久启用(重启后仍有效)
第一步:创建独立的sysctl配置文件
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-ipforward.conf
第二步:加载全部sysctl配置(比sysctl -p更可靠)
sudo sysctl --system
第三步:再次验证运行时值
cat /proc/sys/net/ipv4/ip_forward
现代发行版(Ubuntu 20.04+/RHEL8+)默认优先读取/etc/sysctl.d/下的文件,而非/etc/sysctl.conf。如果只改了sysctl.conf却没执行sysctl --system,或者该目录下有其他同名参数的配置文件覆盖了你的设置,转发依然不会工作。执行ls /etc/sysctl.d/* | xargs grep -l ip_forward可快速排查冲突。










