iptables 规则 - 输入和输出

iptables 规则 - 输入和输出

我是 Linux 和iptables.我的 PC 上有一个 Ubuntu Server 发行版 (12.04),它有 2 个网络接口(eth0eth1)。我还有两台笔记本电脑,一台已插入eth0,另一台已插入eth1

笔记本电脑1 ipconfig:172.16.221.120 - 255.255.252.0 笔记本电脑2 ipconfig:192.168.222.250 - 255.255.255.0

我想从laptop1成功ping到laptop2。

我必须创建INPUTOUTPUT规则吗?还是FORWARD也有规定?

我尝试过这个但没有成功:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

答案1

您可以使用tcpdump以下命令来了解您的 ping 值:

tcpdump -i eth0 -n icmp
tcpdump -i eth1 -n icmp

此外,仅仅允许服务器上的 ping 是不够的;必须对笔记本电脑进行配置,以便它们知道可以通过服务器(路由)到达另一台笔记本电脑。

也许您的防火墙有一条规则允许作为回复的数据包。如果没有那么你还需要

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

无论如何,这是有道理的,因为您可能希望两台笔记本电脑都能 ping 另一台笔记本电脑。不过,您可以将其限制为 ping 和 pong:

iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT

最后一个问题是笔记本电脑本身:如果至少其中一台有自己的防火墙,那么它可能会阻止 ping(一般情况下或由于接口网络之外的源地址)。

答案2

默认情况下,您不需要任何规则,因为带有ACCEPT默认策略的 netfilter 链是空的。如果您已经添加了规则,那么为了允许 ping 通过,需要将规则添加到FORWARD链中。

您还需要将服务器设置为路由器,并确保每台笔记本电脑都将服务器作为默认路由(或者至少具有另一台笔记本电脑子网的路由)。

要启用路由(IP 转发),需要设置/proc/sys/net/ipv4/ip_forward1。 Ubuntu 应该有/etc/sysctl.conf可以自动设置项目的地方/proc/sys

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

如果您确实更改了此设置,则需要将更改加载到内核中:

sudo sysctl -p /etc/sysctl.conf

更改将在下次启动时自动加载,因此您只需在更改后手动运行此命令一次/etc/sysctl.conf

相关内容