Использование IPTABLES для изоляции интерфейсов

Я использую следующую настройку на своей машине Linux:

В системе существуют два моста со следующими интерфейсами:

bridge_default –

  1. ЛВС
  2. WAN

bridge_1 –

  1. WLAN1

Я хотел бы изолировать между интерфейсами, чтобы сообщения, поступающие из интерфейса WLAN1, не смогли достичь интерфейса LAN (на bridge_default) – только для интерфейса WAN.

Для этого я установил следующие правила:

Chain DEFAULT_FORWARD (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- wlan1 wan 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- bridge_default wlan1 0.0.0.0/0 0.0.0.0/0 Chain DEFAULT_INPUT (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- wlan1 wan 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- bridge_default wlan1 0.0.0.0/0 0.0.0.0/0 Chain DEFAULT_OUTPUT (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- wlan1 wan 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- bridge_default wlan1 0.0.0.0/0 0.0.0.0/0 

Однако, когда я действительно тестирую эту конфигурацию, я заметил, что поведение не так, как ожидалось. Чтобы быть более конкретным, журнал показывает, что сообщения поступают из bridge_1, а не из интерфейса WLAN1:

IN=bridge_1 OUT= PHYSIN=wlan1 MAC=00:e0:92:00:01:51:e8:2a:ea:18:60:7d:08:00 S RC=192.168.2.101 DST=192.168.1.1 LEN=60 TOS=0x00 PREC=0x00 TTL=128 ID=21154 PROTO=ICMP TYPE=8 CODE=0 ID=6 SEQ=6891

РЕДАКТИРОВАТЬ

Результаты команды iptables-save представлены ниже:

 -A DEFAULT_FORWARD -i wlan1 -o wan -j ACCEPT -A DEFAULT_FORWARD -i bridge_default -o wlan1 -j DROP -A DEFAULT_INPUT -i wlan1 -o wan -j ACCEPT -A DEFAULT_INPUT -i bridge_default -o wlan1 -j DROP -A DEFAULT_OUTPUT -i wlan1 -o wan -j ACCEPT -A DEFAULT_OUTPUT -i bridge_default -o wlan1 -j DROP 

Список доступных сетевых адаптеров:

 root@ugwcpe:~# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP,80000> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 8: eth0_1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff 9: eth0_2: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:41 brd ff:ff:ff:ff:ff:ff 10: eth0_3: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:42 brd ff:ff:ff:ff:ff:ff 11: eth0_4: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state DOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:43 brd ff:ff:ff:ff:ff:ff 12: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:44 brd ff:ff:ff:ff:ff:ff 15: default_bridge: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff 16: wan@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP,80000> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default link/ether 00:e0:92:00:01:45 brd ff:ff:ff:ff:ff:ff 17: rtlog0: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:40 brd ff:ff:ff:ff:ff:ff 18: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UP mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:50 brd ff:ff:ff:ff:ff:ff 25: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:51 brd ff:ff:ff:ff:ff:ff 26: wlan0.1: <BROADCAST,MULTICAST,UP,LOWER_UP,80000> mtu 1500 qdisc pfifo_fast master default_bridge state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 00:e0:92:00:01:52 brd ff:ff:ff:ff:ff:ff 

Правила пересылки по умолчанию:

 -A DEFAULT_FORWARD -i bridge1 -o wan -j ACCEPT -A DEFAULT_FORWARD -i wan -o bridge1 -j ACCEPT -A DEFAULT_FORWARD -i default_bridge -o bridge1 -j DROP -A DEFAULT_FORWARD -i bridge1 -o default_bridge -j DROP -A DEFAULT_FORWARD -i bridge1 -o wan -j ACCEPT -A DEFAULT_FORWARD -i wan -o bridge1 -j ACCEPT -A DEFAULT_FORWARD -o bridge1 -j DROP -A DEFAULT_FORWARD -i bridge1 -j DROP -A DEFAULT_FORWARD -i wlan -o wan -j ACCEPT -A DEFAULT_FORWARD -i wan -o wlan -j ACCEPT -A DEFAULT_FORWARD -o wlan -j DROP -A DEFAULT_FORWARD -i wlan -j DROP 

Может кто-то, пожалуйста, помогите мне и укажите, что я делаю неправильно?

Спасибо всем заранее!

Вы не препятствуете сообщениям от wlan1 переходить на lan .

Я немного путаюсь с NICs .

попробуй это:

 -A DEFAULT_FORWARD -i wlan1 -o wan -j ACCEPT -A DEFAULT_FORWARD -i bridge_default -o wlan1 -j DROP ############# ADDED ################################# -A DEFAULT_FORWARD -i wlan1 -o bridge_default -j DROP ##################################################### -A DEFAULT_INPUT -i wlan1 -o wan -j ACCEPT -A DEFAULT_INPUT -i bridge_default -o wlan1 -j DROP -A DEFAULT_OUTPUT -i wlan1 -o wan -j ACCEPT -A DEFAULT_OUTPUT -i bridge_default -o wlan1 -j DROP 

Любой пакет не переходит к bridge_default если он не совпадает с первым добавленным вами правилом -i wlan1 -o wan -j ACCEPT

Проблема, описанная здесь, связана с тем, что iptables применяются только после того, как стек linux можно решить несколькими способами:

  1. Используйте ebtables вместо iptables –

Поскольку ebtables применяют правила на уровне ETH, мы можем применять правила к реальному интерфейсу, а не так, как описано здесь, когда пакет прибывает на мост Linux, он редактируется и изменяется так, что значение IN будет мостом

  1. Используйте bridge_1 вместо интерфейса –

Если на мостике вместо интерфейса будут применяться те же правила таблицы вверх, то проблем не будет, и правила будут работать нормально