除了对 Linux 机器本身的请求之外,如何通过 Linux 机器转发流量?

除了对 Linux 机器本身的请求之外,如何通过 Linux 机器转发流量?

我有一个启用了 IP 转发的 Ubuntu 盒子和一个非常简单的 iptables 配置,允许转发 LAN 内的所有数据包:

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -I FORWARD -s 192.168.4.0/24 -j ACCEPT

这一切都很好,只是盒子上的 SMB 共享不再起作用,大概是因为以盒子本身为目的地的数据包也被转发了。

是否有一个简单的解决方案,使得对盒子本身的任何 TCP 连接请求都不会被转发,而只转发对外部 IP 地址的请求?

答案1

FORWARD 链仅用于转发的流量,即 - 本地机器不是它的目的地,因此您的规则对这种流量没有任何影响,您应该寻找问题的地方是 INPUT 链,它处理针对本地机器本身的流量。

使用-S命令或-L查询INPUT链:

iptables -S INPUT

查找链策略(以 -P 开头)并查看这是否是删除或接受策略,如果这是删除策略,则可能需要更改它或添加明确的规则以允许 SAMBA 进入。此规则可能会完成以下工作:

iptables -A INPUT -p tcp --dport 445 -j ACCEPT

本指南举几个例子

相关内容