我的服务器运行在最新的内核(4.4.6)上,已经配置了一个 bond 设备(bond0)具有两个从属接口eth0,wlan0带有主接口eth0。
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: wlan0
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 1000
Down Delay (ms): 1000
Slave Interface: wlan0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: dc:53:60:5f:50:cd
Slave queue ID: 0
Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 4
Permanent HW addr: b8:ae:ed:7c:7d:c9
Slave queue ID: 0
我还运行 iptables 来过滤流量并阻止一些本地端口,同时允许所有传出流量。
*filter
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8090 -j ACCEPT
我未能做到的是创建一个机制,当主接口eth0下降,并且wlan0正在积极阻止特定端口上的远程访问。
我尝试添加一条 iptable 规则wlan0虽然我知道这是不正确的,因为界面是bond0 (失败的)
*filter
-A INPUT -p tcp -i wlan0 -m state --state NEW -m tcp --dport 8090 -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8090 -j ACCEPT
我尝试添加一条 iptable 规则wlan0在预路由上标记数据包并在过滤器上捕获(失败的)
*mangle
-A PREROUTING -i wlan0 -j MARK --set-xmark 0x1/0xffffffff
*filter
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8090 -m mark ! --mark 0x1 ACCEPT
我尝试添加一个 ebtable 规则来标记第 2 层的数据包并在第 3 层的过滤器上捕获(失败的)
EBTABLE
ebtables -t broute -A BROUTING -p ipv4 -i wlan0 -j mark --set-mark 0x1 --mark-target ACCEPT
IPTABLE
*filter
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8090 -m mark ! --mark 0x1 ACCEPT
我想避免使用 MAC 地址解决方案,因为它在 Mac 上不起作用 策略:无
有任何想法吗?