VPN/WIreguard перенаправляет внутренний и внешний трафик
Это может быть больше вопрос о брандмауэре Linux, но контекст — это настройка Wireguard VPN в Ubuntu. Заметьте, я едва знакомлюсь со многими из этих вещей.
У меня есть Wireguard, работающий на Digital Ocean Ubuntu с клиентами Windows и Android, использующими его. Все вроде хорошо.
Основные команды брандмауэра, которые я использую, когда они появляются, приведены ниже: Итак, третья строка, по-видимому, направляет весь входящий трафик (частный VPN) через общедоступный интерфейс. Как надо (почти?) и работает нормально. Wgo/Частная сеть
10.8.0.1/24
и сервер
10.8.0.1
. Когда клиентский трафик поступает на указанный ниже сервер, предназначенный для
10.8.0.x
(другой адрес в частной сети) время ожидания истекло.
Я «думал», что это потому, что он пытается направить его через
eth0
? Если да, то как мне убедиться, что трафик, предназначенный для частной подсети, остается с использованием
wg0
интерфейс? Если нет, какие еще предложения?
PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = sysctl -w net.ipv6.conf.all.forwarding=1
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = sysctl -w net.ipv4.ip_forward=0
PostDown = sysctl -w net.ipv6.conf.all.forwarding=0
1 ответ
Если ваша политика по умолчанию — отбрасывать или запрещать пересылку в iptables/ufw. Тогда вам, скорее всего, не хватает записей брандмауэра/ufw для разрешения потока трафика между различными интерфейсами wireguard или входом и выходом на одном и том же интерфейсе.
Вы можете проверить свой dmesg для
Разрешить неограниченный входящий и исходящий поток на одном и том же интерфейсе wg
PostUp = ufw route allow in on wg0 out on wg0
Я предпочитаю изменять файл конфигурации напрямую
-A ufw-before-forward -i wg0 -s 10.8.0.1/24 -o wg0 -d 10.8.0.1/24 -j ACCEPT
Это разрешит трафик с (-s флаг) 10.8.0.1/24 на интерфейсе wg0 на (-d флаг) 10.8.0.1/24 на интерфейсе wg0. -i — входной интерфейс, а —o — выходной интерфейс.
Если вы предпочитаете использовать путь вверх\вниз, вы можете добавить iptables перед командой.
iptables -A ufw-before-forward -i wg0 -s 10.8.0.1/24 -o wg0 -d 10.8.0.1/24 -j ACCEPT
Удачи :)