Как я могу предотвратить TINC от ретрансляции DHCP
Я использую tinc на нескольких маршрутизаторах NAT, на которых установлен Debian 7 Wheezy, VPN прекрасно работает в течение нескольких месяцев, за исключением того, что я настроил его в режиме коммутатора, он передает запросы DHCP и отвечает по всей VPN. Проблема заключается в том, что хост A использует пул с 10.10.10.2-254 для DHCP, с 10.10.10.1 в качестве шлюза (хост A), хост B использует пул с 10.10.10.2-254 для DHCP с 10.10.20.1 в качестве шлюза (хост B) и так далее.
Обратите внимание, что интерфейс tinc tap (ethernet) соединен через физический интерфейс локальной сети, потому что цель моего "облака" - заставить ВСЕ хосты во всех сетях (A,B ..) появляться в одной локальной сети.
Я ищу простое решение, чтобы преодолеть это. Попытался использовать iptables с physdev и physdev-in, указав интерфейс tinc, но это, похоже, не сработало.
Есть ли другое решение для этого?
PS: переключение tinc в режим роутера не является решением, так как мне действительно нужны многоадресные и другие не маршрутизируемые протоколы.
1 ответ
Он должен работать с iptables -t mangle -m physdev, если для переменной sysctl net.bridge.bridge-nf-call-iptables установлено значение 1.
sysctl -w net.bridge.bridge-nf-call-iptables=1
iptables -t mangle -I PREROUTING -m physdev --physdev-in vpn1 \
-p udp --dport 67:68 -j DROP
У вас также есть возможность заблокировать его с помощью ebtables:
## dont accept dhcp packets directed to the local machine
ebtables -A INPUT --in-interface vpn1 --protocol ipv4 \
--ip-protocol udp --ip-destination-port 67:68 -j DROP
## dont forward dhcp packets coming in from vpn
ebtables -A FORWARD --in-interface vpn1 --protocol ipv4 \
--ip-protocol udp --ip-destination-port 67:68 -j DROP
## dont send dhcp requests over vpn
ebtables -A FORWARD --out-interface vpn1 --protocol ipv4 \
--ip-protocol udp --ip-destination-port 67:68 -j DROP