У меня есть Raspberry Pi, на котором запущен клиент OpenVPN, подключающийся к провайдеру VPN, а также сервер Wireguard, чтобы я мог подключиться к своей домашней локальной сети извне. Я хочу подключиться к моему дому через wireguard и отправить весь трафик через соединение Openvpn.

Это мой вывод ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 172.1.1.1  netmask 255.255.255.0  destination 172.1.1.1

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.8.17  netmask 255.255.255.0  destination 10.8.8.17

eth0 - это шлюз в интернет (подключен к моему домашнему роутеру)

Когда я подключаюсь к проводному серверу без запущенного клиента OpenVPN, я могу подключиться к своей внутренней локальной сети (192.168.1.X), а также отправлять мои запросы в интернет через Raspberry Pi (eth0). Когда я включаю клиент OpenVPN (настройка 0), я не могу подключиться к внутренней локальной сети, а также не могу подключиться к Интернету.

То, что я хочу сделать, это подключиться к моему дому через wireguard и получить весь туннель трафика через соединение openvpn (tun0).

Это мой вывод из "route -n":

Перед запуском OpenVPN (wireguard работает нормально):

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
172.1.1.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0

После запуска openVPN tun0 (проводное соединение не достигает клиентов интернета и локальной сети):

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.8.1        128.0.0.0       UG    0      0        0 tun0 
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0 
10.8.8.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0 
95.142.172.143  192.168.1.1     255.255.255.255 UGH   0      0        0 eth0 
128.0.0.0       10.8.8.1        128.0.0.0       UG    0      0        0 tun0 
172.1.1.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0  
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0 

Мои правила брандмауэра:

-A FORWARD -i wg0 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Отсутствуют ли какие-либо правила брандмауэра или какие-либо маршруты, которые я должен добавить, чтобы это работало? Что я должен был иметь?

Спасибо!!

1 ответ1

0

Вы сказали: "Я хочу подключиться к моему дому через wireguard и отправить весь трафик через соединение Openvpn", что не имеет смысла. Я интерпретирую это как "Я хочу подключиться к своему дому через проводную охрану и отправить ВЕСЬ ДРУГОЙ трафик через соединение Openvpn".

Когда вы запускаете сервер OpenVPN, ваш маршрут по умолчанию изменяется с 192.168.1.1 на 10.8.8.1, который маршрутизируется через tun0. Похоже, что равноправным адресом tun0 является 95.142.172.143, для которого определен собственный маршрут /32, поэтому трафик для этого всегда отправляется напрямую в Интернет через eth0. Этот статический маршрут освобождает конечную точку туннеля от маршрутизации по умолчанию, и без нее туннель не будет работать.

Это говорит о том, что ваш клиент OpenVPN настроен на маршрутизацию всего трафика на удаленную сторону туннеля OpenVPN. Это типичная конфигурация OpenVPN, она будет использоваться, когда вы не доверяете локальной сети и хотите, чтобы весь ваш трафик был надежно зашифрован и направлен через сервер OpenVPN.

Как только вы запускаете сервер OpenVPN, весь трафик вашего сервера Wireguard перенаправляется по этому маршруту по умолчанию через туннель OpenVPN, и он переходит во все, что находится на другой стороне этого туннеля, где он предположительно отбрасывается.

Я предполагаю, что вам нужно указать статический маршрут к вашему серверу Wireguard аналогично тому, как OpenVPN добавил маршрут /32 для своего сервера (95.142.172.143). Например, если ваш сервер Wireguard был 100.100.100.10, вы бы добавили статический маршрут для этого IP-адреса через eth0. Вы сможете определить, правильно ли вы это поняли, потому что он будет напоминать результат, полученный в таблице маршрутизации, приведенной выше для 95.142.172.143. Для тестирования в командной строке после запуска сервера OpenVPN попробуйте:

# route add -host IP-OF-REMOTE-WIREGUARD-SERVER gw DEFAULT-GATEWAY-IP

Где "DEFAULT-GATEWAY-IP" - это IP-адрес вашего интернет-провайдера, который выглядит как 192.168.1.1 из приведенных выше примеров. Затем, когда вы выполните команду «netstat -rn», вы должны увидеть новый маршрут с флагами "UGH" точно так же, как маршрут 95.142.172.143 в выходных данных "netstat" в вопросе.

Подводя итог, следует отметить, что туннели должны проходить через необработанное интернет-соединение. Ваша настройка не работает, потому что он пытается заполнить туннель Wireguard внутри туннеля OpenVPN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .