Я настраиваю сеть, и мне нужно разрешить доступ только для определенных MAC-адресов.
Пусть eth0 и eth1 - физические интерфейсы. eth1 подключен к внешней сети, а eth0 и его vlans находятся во внутренней сети.
Для этой цели я использую Linux iptables, и у меня есть следующий код для конфигурации по умолчанию.
# Allowing ip forwarding and loopback
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
# Setting up nat and default chains settings
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -N FILTER
iptables -P FORWARD DROP
# Setting up default configuration
iptables -A FORWARD -p tcp -m conntrack --ctstate NEW -i eth0+ -o eth1 -j FILTER
iptables -A FORWARD -p tcp -m conntrack \
--ctstate RELATED,ESTABLISHED,DNAT,SNAT,INVALID -i eth0+ -o eth1 -j ACCEPT
iptables -A FORWARD ! -p tcp -i eth0+ -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0+ -m state \
--state RELATED,ESTABLISHED -j ACCEPT
Делая это, я фильтрую весь входящий трафик TCP с состоянием NEW и разрешаю весь трафик любого другого протокола или TCP с другими состояниями. Я обрабатываю эти отфильтрованные tcp-запросы по следующему правилу
# Allowing tcp traffic with ctstate NEW for certain mac
iptables -A FILTER -p tcp -m conntrack --ctstate NEW -i eth0+ -o eth1 \
-m mac --mac-source <mac> -j ACCEPT
В тестовой среде с этой конфигурацией разрешенные MAC-адреса могут получать доступ к Интернету с нормальной скоростью загрузки, но скорость загрузки почти равна нулю. Я что-то забываю?
Лучший способ устранить подобные проблемы - захватить трафик и проанализировать его с помощью wireshark
.
В большинстве случаев проблемы со скоростью вызваны проблемами MTU. Проблемы с MTU могут быть вызваны блокировкой ICMP
пакетов, требуемых Path MTU discovery
.
Вставьте полный набор правил брандмауэра. Использовать iptables-save -c
команда, чтобы вывести список всех правил, а не только из filter
стол.
Проверьте счетчики правил. Помните, что порядок правил брандмауэра очень важен.