Мой сервер, работающий на последней версии ядра (4.4.6), настроил связующее устройство (облигация0) с двумя порабощенными интерфейсами 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 хотя я знаю, что это неправильно, потому что интерфейс облигация0 (Не смогли)
*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, чтобы отмечать пакеты на Layer2 и ловить фильтр Layer3 (Не смогли)
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. Политика: Нет
Любые идеи?