使用 iptables 使流量单向流动

使用 iptables 使流量单向流动

我有一个网络拓扑:

[C1]-[R1]-[R2]-[C2]

C1-R1 网络为 192.168.100.0/24
R1-R2 网络为 10.9.8.0/30
R2-C2 网络为 192.168.200.0/24

我需要做的是通过将一些 iptables 规则应用到 R2 来使 C2 能够连接到 C1。同时我不希望 C1 连接到 C2。我尝试创建一些 FORWARD 链规则,但就是无法使其正常工作。

有没有简单的方法可以让它工作?


以下是 iptables -L -v 的内容:

链输入(策略丢弃 5 个数据包,372 字节)
数据包字节目标协议选择加入退出源目标

链转发(策略丢弃 4 个数据包,240 字节)
数据包字节目标协议选择加入退出源目标

5 420 拒绝所有 -- 任何 enp0s3 任何位置任何位置
状态 NEW 拒绝 - 带有 icmp 端口不可达

链输出(策略丢弃 5 个数据包,560 字节)
数据包字节目标协议选择加入退出源目标

答案1

尝试状态或 conntrack 模块。

iptables -A FORWARD -o $IFACE -m state --state NEW -j REJECT

$IFACER2 上连接 C2 的接口在哪里。

这样,来自 C1 的建立新连接的数据包将被拒绝。从 C2 到 C1 的数据包不受此规则影响。

编辑:由于您的 FORWARD 链具有策略 DROP,因此您还需要允许数据包向相反方向传输的规则,例如:

iptables -A FORWARD -i $IFACE -j ACCEPT
iptables -A FORWARD -o $IFACE -m state ! --state NEW -j ACCEPT

相关内容