Использование ebtables для отбрасывания пакетов с моста и маршрутизации через Tinc VPN
В Ubuntu настроен мост для связи нашей локальной сети с нашим шлюзом, который находится в той же подсети. Нам нужно это, чтобы иметь возможность контролировать трафик, и в настоящее время мы не можем менять подсети, поэтому мы не можем просто вместо этого направить его.
Шлюз управляется через нашего интернет-провайдера, который предоставляет MPLS для различных других /24 подсетей в пределах 192.168.0.0/16.
Текущая настройка выглядит следующим образом:
192.168.10.1 (gw) <-> eth0 <-> br0 (192.168.10.3) <-> eth1 <-> LAN (192.168.10.0/24)
br0 Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
eth0 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Это работает хорошо и не вызывает никаких проблем.
У нас также есть Tinc VPN к нашей инфраструктуре центра обработки данных на том же сервере (192.168.10.3), который не является частью моста. то есть:
tincvpn Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.255.255 Mask:255.255.0.0
...
Мы хотели бы переопределить маршрутизацию пакетов, проходящих через мост из локальной сети для определенных пунктов назначения (например, 192.168.5.0/24), чтобы они проходили через tinc. то есть: 192.168.10.x в локальной сети до 192.168.5.x должен проходить через tinc, а не к шлюзу.
Мы хотели бы, чтобы это работало на всех машинах в локальной сети без необходимости что-либо настраивать, но пока нашли обходной путь, который заключается в добавлении следующего статического маршрута к каждому ПК / серверу в локальной сети:
route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0
Чтобы статический маршрут работал, мы также должны были включить proxy_arp для всех интерфейсов в 192.168.10.3.
Мы попробовали следующую конфигурацию, но она не сработала:
ip rule add fwmark 20 lookup 20
ip route add 192.168.0.0/16 dev tincvpn table 20
ebtables -t broute -I BROUTING -i eth1 -p ipv4 --ip-dst 192.168.5.0/24 -j REDIRECT --redirect-target DROP
iptables -t mangle -I PREROUTING -i eth1 -d 192.168.5.0/24 -j MARK --set-mark 20
С этой настройкой пакеты достигли правила mangle и были отмечены, но они не маршрутизировались на интерфейс tincvpn
Наше понимание заключалось в том, что нам нужно было отбрасывать пакеты с моста с помощью ebtables, а затем использовать маршрутизацию на основе политик, чтобы пакеты проходили через tinc. Это понимание правильно?
Если у кого-то есть какие-либо идеи относительно того, почему это не сработает, это будет оценено.
Большое спасибо,
Том