iptables 规则的奇怪行为

iptables 规则的奇怪行为

我有一组 iptables 规则(见下文),其目的是当我的 VPN 连接突然丢失或手动终止时,禁止流量流出我的机器:

#!/bin/bash

echo "Please wait a moment......"
echo "Save original iptables. Apply new iptables rules"

iptables-save > /home/username/vpn/iptables.save

iptables -A INPUT -m conntrack -j DROP --ctstate INVALID
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp -m conntrack -s 123.123.123.123 -i eth0 --sport 443 -j ACCEPT  --ctstate ESTABLISHED #ca1.conf
iptables -A OUTPUT -p tcp -m tcp -m conntrack -d 123.123.123.123 -o eth0 --dport 443 -j ACCEPT --ctstate NEW,ESTABLISHED #ca1.conf
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j REJECT
iptables -A OUTPUT -p tcp -m tcp -m conntrack -o tun0 --dport 80 -j ACCEPT  --ctstate NEW,ESTABLISHED
iptables -A OUTPUT -p tcp -m tcp -m conntrack -o tun0 --dport 443 -j ACCEPT  --ctstate NEW,ESTABLISHED
iptables -A OUTPUT -p tcp -m tcp -m conntrack -o tun0 --dport 53 -j ACCEPT  --ctstate NEW,ESTABLISHED
iptables -A OUTPUT -p tcp -m tcp -m conntrack -o tun0 --dport 53 -j ACCEPT  --ctstate NEW,ESTABLISHED
iptables -A INPUT -p tcp -m tcp -m conntrack -i tun0 --sport 80 -j ACCEPT  --ctstate ESTABLISHED
iptables -A INPUT -p tcp -m tcp -m conntrack -i tun0 --sport 443 -j ACCEPT  --ctstate ESTABLISHED
iptables -A INPUT -p tcp -m tcp -m conntrack -i tun0 --sport 53 -j ACCEPT  --ctstate ESTABLISHED
iptables -A INPUT -p tcp -m tcp -m conntrack -i tun0 --sport 53 -j ACCEPT  --ctstate ESTABLISHED
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -j DROP

上述 iptables 规则适用于运行 Intel Haswell CPU(i7-4xxx 系列,四核,8 线程)和 Haswell 芯片组(H87 系列)的计算机。

但是,它们不适用于运行 Intel Ivy-Bridge CPU(i7-3xxx 系列,四核,8 线程)和 Ivy-Bridge 芯片组(H77 系列)的计算机。

有人能告诉我为什么吗?

所使用的操作系统是 Debian Wheezy,并且相同的 HDD 用于上述实验。

答案1

与CPU芯片组无关的可能性很小。更有可能与网卡有关。

如果您在两台不同的计算机之间共享相同的硬盘和操作系统安装,则 NIC 将不同,因此该 NIC 的 MAC 将不同。因此,它几乎肯定会在配置上绑定到另一个配置上eth0eth1

您可以通过编辑/etc/udev/rules.d/70-persistent-net.rules并确保两个生成的规则都将接口命名为 来修复 Wheezy 上的此问题eth0。 (只要确保您永远不会尝试拥有一台具有两个 NIC 的计算机。)

这是我的系统中的相应条目。您系统的 MAC 会有所不同。此行指示udevd为带有 MAC 的 NIC指定00:0a:cd:20:aa:3f名称eth0

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:04.0/0000:02:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0a:cd:20:aa:3f", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

相关内容