Я запускаю сервер 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, в любом случае не дойдет до этого места. Это правильно?