我有一组 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 将不同。因此,它几乎肯定会在配置上绑定到另一个配置上eth0
。eth1
您可以通过编辑/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"