Я запускаю сервер WireGuard на своем Raspberry Pi, используя https://github.com/linuxserver/docker-wireguard изображение. Я хочу разрешить сверстникам делать две вещи:
- Подключение к одному NAS через SMB
- Пинг того же NAS
Я написал следующие правила iptables, чтобы заархивировать это (WG0 интерфейс WireGuard, eth0 тот, что «в сторону» моей сети):
# Сбросить (сбросить) правила
iptables -t физ -F
iptables-F
# Разрешить трафик WireGuard
iptables --policy ВВОД ПРИНЯТЬ
iptables --policy ВЫВОД ПРИНЯТЬ
# Запретить любой прямой трафик по умолчанию
iptables --policy ПЕРЕНОС ВПЕРЕД
# Разрешить трафик SAMBA на NAS
NAS="192.168.178.23/32"
iptables -A FORWARD -i wg0 -p tcp --dport 445 -d "$NAS" -m состояние --state НОВОЕ,СВЯЗАННОЕ,УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -o wg0 -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
# Разрешить эхо-запрос ICMP
iptables -A FORWARD -i wg0 -p icmp --icmp-type 8 -d "$NAS" -m состояние --state НОВОЕ,СВЯЗАННОЕ,УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -o wg0 -p icmp --icmp-type 0 -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
# IP туннеля NAT во внутренний IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Они работают, поэтому при подключении через WireGuard я могу пропинговать и подключить NAS через SMB, но я не могу пропинговать любую другую службу в сети или получить доступ к HTTP-интерфейсу NAS.
Однако у меня есть несколько вопросов, чтобы точно понять, что я сделал:
- При настройке
ВХОД/ВЫВОД политика УРОНИТЬ, ничего не работает. Я предполагаю, что это связано с тем, что пакеты WireGuard UDP, полученные на WG0 отбрасываются политикой?
- Если я все равно установлю политику и добавлю правило в
ПОЗВОЛЯТЬ трафик из/в WG0, в результате контейнер не сможет ни к чему подключиться через eth0 и только ВПЕРЕД трафик из WG0?
- Правило, позволяющее
СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ трафик через WG0 должен соответствовать только трафику, полученному в ответ на TCP:445 или ICMP:echo-request. Не нужно быть более конкретным (например, соответствующий порт/протокол), верно?
- Правило
ПОЗВОЛЯТЬэхо-ответы не нужны, потому что менее конкретное правило, позволяющее СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ трафик над ним будет совпадать перед ним, верно?
- Со всей фильтрацией на
ВПЕРЕД цепочка, я предполагаю, что мне не нужно фильтровать нат столы РАЗМЕЩЕНИЕ chain, потому что любой трафик, который не предназначен для NAS по протоколу TCP:445 или ICM:echo-request, в любом случае не дойдет до этого места. Это правильно?