История изменений
Исправление Nao, (текущая версия) :
Можно использовать опцию --dhcp-script у dnsmasq и написать скрипт который будет добавлять/удалять правила в фаерволе.
Изначально при старте iptables будет создаваться цепочка типо такой:
iptables -P FORWARD REJECT
iptables -N dhcp
iptables -A FORWARD -i $LAN_INTERFACE -j dhcp
iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Затем в скрипте добавления --dhcp-script:
iptables -A dhcp -m mac --mac-source $CLIENT_MAC -s $CLIENT_IP -j ACCEPT
И соответствующая строчка для удаления.
Можно пойти другим путём и просто добавить те же ограничения по ip/mac в iptables ручками. Это подойдёт если состав компов редко меняется.
Ну и как говорили выше - фильтрация по ip/mac легко обходится:
- Пассивно слушается трафик для выявления легитимных ip/mac
- Ставим у себя этот ip/mac (желательно когда комп с этим ip/mac не в сети) и ходим в инет.
Исходная версия Nao, :
Можно использовать опцию --dhcp-script у dnsmasq и написать скрипт который будет добавлять/удалять правила в фаерволе.
Изначально при старте iptables будет создаваться цепочка типо такой:
iptables -P FORWARD REJECT
iptables -N dhcp
iptables -A FORWARD -i $LAN_INTERFACE -j dhcp
iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Затем в скрипте добавления --dhcp-script:
iptables -A dhcp -m mac --mac-source $CLIENT_MAC -s $CLIENT_IP -j ACCEPT