iptables 将所有流量转发到接口

use*_*110 17 iptables

我有两个接口eth1eth0. 我希望将所有流量eth0转发到eth1. 我创建了一个这样的 iptable 规则:

iptables -A FORWARD -s 0/0 -i eth0 -p tcp -o eth1 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但这不起作用。这是这样做的正确方法吗?

Cre*_*eek 27

如果您尚未在内核中启用转发,请执行此操作。

  • 打开/etc/sysctl.conf并取消注释net.ipv4.ip_forward = 1

  • 然后执行 $ sudo sysctl -p

将以下规则添加到 iptables

sudo iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE  
sudo iptables -A FORWARD --in-interface eth0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

所有转发的流量都将遍历 FORWARD 链。要过滤数据包,您现在必须在该链上创建规则,指定传入/传出哪个接口,而不是使用 INPUT/OUTPUT 链。