Я успешно интегрировал Wireguard в свою локальную сеть, чтобы получить доступ к своему NAS (192.168.1.45 )снаружи.
|Router| ===:5182=> |VPN server| ====> |NAS|
192.168.1.254 192.168.1.21 (wlan0) 192.168.1.45
10.10.10.1 (wg0)
Пересылка пакетов через мой VPN-сервер зависит от:
/etc/sysctl.conf
(Cf моего сценария)PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o $main_nic -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o $main_nic -j MASQUERADE
(это команда wireguard, выполняемая при остановке wg0)
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o $main_nic -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o $main_nic -j MASQUERADE
Это работает как шарм, но как я могу ограничить вещи, чтобы клиент, входящий в мою локальную сеть через эту точку входа VPN, мог получить доступ только к 192.168.1.45 а другого ИП нет? Совместимо ли это с IP-переадресацией ?
В идеале, если бы этим можно было полностью управлять в директивах PostUpPostDown wireguard (независимо от предыдущих правил системы ), это было бы потрясающе. Пробовал кое-что, но, скажем прямо, я больше разработчик, чем сетевой администратор
Конечно, вы можете вместо того, чтобы произвольно разрешать трафик, просто убедитесь, что он идет к ожидаемому IP-адресу назначения.:
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wg0 -d 192.168.1.45 -j ACCEPT
В качестве примечания: я бы не стал добавлять и удалять правила в хуках PostUp
и PostDown
., их бесполезно удалять, когда интерфейс больше не существует, поскольку в этом случае они ничего не делают. Просто оставьте их там все время, это меньше подвержено ошибкам -и проще в управлении.