Я запускаю «сервер» Wireguard в своей локальной сети, к которому я подключаюсь удаленно через свой статический общедоступный IP-адрес.
Я хочу иметь возможность ограничить доступ к удаленным одноранговым узлам Wireguard службам/машинам в моей локальной сети, где я размещаю другой сервер.
Пример:
Сервер 1 (192.168.1.23 | 10.0.0.1) с установленным Wireguard + Nextcloud + Jellyfin на одной машине
Сервер 2 (192.168.1.62) с Photoprism
Удаленный узел 1 (10.0.0.2 | динамический IP-адрес)
Удаленный узел 2 (10.0.0.3 | динамический IP-адрес)
Я хочу:
1- Разрешить одноранговому узлу 1 (10.0.0.2) доступ к серверу 1 Nextcloud + Jellyfin и доступ к серверу 2 для Photoprism.
2- Разрешить Peer2 (10.0.0.3) только доступ к серверу 1 Nextcloud, но не к Jellyfin, и заблокировать доступ к серверу 2.
Прямо сейчас я могу получить доступ ко всем машинам в моей локальной сети со всех сверстников.
Правила iptables:
PostUp = iptables -A FORWARD -i %i -j ПРИНЯТЬ; iptables -A FORWARD -o %i -j ПРИНЯТЬ; iptables -t nat -A POSTROUTING -o enp0s7 -j MASQUERADE; iptables -t nat -A РАЗМЕЩЕНИЕ -o wg0
PostDown = iptables -D FORWARD -i %i -j ПРИНЯТЬ; iptables -D FORWARD -o %i -j ПРИНЯТЬ; iptables -t nat -D POSTROUTING -o enp0s7 -j MASQUERADE; iptables -t nat -D POSTROUTING -o wg0
я следил за этим руководство, от Джастин Людвиг потому что топология Site to Point очень похожа на мою.
Итак, я попытался воспроизвести правила Iptables с помощью следующих правил:
# маскарад
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x200
PreUp = iptables -t nat -A РАЗМЕЩЕНИЕ ! -o wg0 -m отметка --mark 0x200 -j МАСКАРАД
PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x200
PostDown = iptables -t nat -D ОТПРАВКА ! -o wg0 -m отметка --mark 0x200 -j МАСКАРАД
# вход wireguard
PreUp = iptables -I ВВОД -p udp --dport 2332 -j ПРИНЯТЬ
PostDown = iptables -D ВВОД -p udp --dport 2332 -j ПРИНЯТЬ
# брандмауэр сайта
PreUp = iptables -N wg0-фильтр
PreUp = iptables -N to-photoprism
PreUp = iptables -N to-jellyfin
PreUp = iptables -N to-nextcloud
PreUp = iptables -I INPUT -i wg0 -j wg0-filter
PreUp = iptables -I ВПЕРЕД -i wg0 -j wg0-фильтр
PreUp = iptables -I FORWARD -o wg0 -j wg0-filter
PreUp = iptables -I ВЫВОД -o wg0 -j wg0-фильтр
PreUp = iptables -A wg0-filter -m состояние --state УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ
PreUp = iptables -A wg0-filter -d 192.168.1.63 -p tcp --dport 2342 -j to-photoprism
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 8096 -j to-jellyfin
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 80 -j to-nextcloud
PreUp = iptables -A wg0-filter -j ОТКЛОНИТЬ
PreUp = iptables -A to-photoprism -s 10.0.0.2 -j ПРИНЯТЬ
PreUp = iptables -A to-jellyfin -s 10.0.0.2 -j ПРИНЯТЬ
PreUp = iptables -A to-jellyfin -s 10.0.0.3 -j ПРИНЯТЬ
PreUp = iptables -A to-nextcloud -s 10.0.0.2 -j ПРИНЯТЬ
PreUp = iptables -A to-nextcloud -s 10.0.0.3 -j ПРИНЯТЬ
PostDown = iptables -D INPUT -i wg0 -j wg0-filter
PostDown = iptables -D FORWARD -i wg0 -j wg0-filter
PostDown = iptables -D FORWARD -o wg0 -j wg0-filter
PostDown = iptables -D ВЫВОД -o wg0 -j wg0-фильтр
PostDown = iptables -F to-photoprism
PostDown = iptables -F to-jellyfin
PostDown = iptables -F to-nextcloud
PostDown = iptables -X to-photoprism
PostDown = iptables -X to-jellyfin
PostDown = iptables -X to-nextcloud
Это не сработало,
Peer 1 и Peer 2 могут получить доступ к серверу 1, обеим службам, но не к серверу 2.
Я не настолько сообразителен, чтобы понять, что мне нужно изменить, чтобы это заработало, я был бы рад, если бы кто-то мог вмешаться.
заранее спасибо