Как настроить OpenVPN только на локалку? [РЕШЕНО]

Мучаюсь с этим вопросом почти месяц, так и не смог добиться результата.

Есть собственный сервер на арче с белым ip. На нем запущен OpenVPN сервер. Есть 7 клиентов (ПК на арче, смарты на андроиде), которые подключаются к этому серверу. На ПК через Networkmanager с плагином openvpn, на смартах через родное приложение от OpenVPN. Все работает.

На сервере две локалки 192.168.0.* и 192.168.8.*.

Вопрос: как настроить впн так, чтобы запросы от клиентов к серверу шли через впн, а трафик в интернет шел без впн? На сервере канал на отдачу всего 2 Мбит по тарифу (на деле чуть ниже). Просмотр ютуба или загрузка больших файлов через впн идет очень медленно. Поэтому хотелось направить интернет мимо впн.

В основном советуют убрать из конфига сервера строку redirect-gateway. При этом если с ПК зайти на сайт 2ip.ru показывает ip сервера, а со смарта показывает ip его провайдера (в моем случае ip МТСа). Но если делать тест скорости с любога клиента на speedtest.net скорость получается как через впн соединение. На сервере видно, что канал в это время загружается.

Конфиг клиентов:
client
remote *.*.*.*
port 53
dev tun
proto udp
resolv-retry infinite
nobind

persist-key
persist-tun

;mute-replay-warnings

remote-cert-tls server
cipher AES-256-CBC
verb 3
key-direction 1

Конфиг сервера:
port 53
proto udp
dev tun

server 10.8.0.0 255.255.255.0
;ifconfig-pool-persist ipp.txt

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/servername.crt
key /etc/openvpn/certs/servername.key
dh /etc/openvpn/certs/dh2048.pem

push "redirect-gateway autolocal def1 bypass-dhcp"
push "route 192.168.0.0 255.255.255.0"
push "route 192.168.8.0 255.255.255.0"

keepalive 10 120
remote-cert-tls client
tls-auth /etc/openvpn/certs/ta.key
cipher AES-256-CBC

persist-key
persist-tun

;compress lz4-v2
;push "compress lz4-v2"
;max-clients 100

status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 4

explicit-exit-notify 1
key-direction 0

На сервере
ip route
default via 192.168.8.1 dev enp2s0
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
192.168.8.0/24 dev enp2s0 proto kernel scope link src 192.168.8.23

На клиенте ПК
ip route
default via 10.8.0.9 dev tun0 proto static metric 50
default via 192.168.43.1 dev wlp2s0 proto dhcp metric 600
10.8.0.1 via 10.8.0.9 dev tun0 proto static metric 50
10.8.0.9 dev tun0 proto kernel scope link src 10.8.0.10 metric 50
178.205.142.189 via 192.168.43.1 dev wlp2s0 proto static metric 600
192.168.0.0/24 via 10.8.0.9 dev tun0 proto static metric 50
192.168.8.0/24 via 10.8.0.9 dev tun0 proto static metric 50
192.168.43.0/24 dev wlp2s0 proto kernel scope link src 192.168.43.246 metric 600
192.168.43.1 dev wlp2s0 proto static scope link metric 600

На клиенте андроид
ip route
10.8.0.4/30 dev tun0 proto kernel scope link src 10.8.0.6
10.208.253.180/30 dev rmnet_data1 proto kernel scope link src 10.208.253.181
192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.1
Решение:
проблема была в Networkmanager-е или его плагине для openvpn. Если запускать напрямую
sudo openvpn /etc/openvpn/client/client.conf
все сразу работает - интернет напрямую, локальный трафик к серверу и его подсетям через впн.
И еще. На сервере запускается такой скрипт, чтобы у клиентов работал интернет:
#!/bin/sh
DEV='ens3'
PRIVATE=10.8.0.0/24

if [ -z "$DEV" ]; then
    DEV="$(ip route | grep default | head -n 1 | awk '{print $5}')"
fi

sysctl net.ipv4.ip_forward=1

iptables -I FORWARD -j ACCEPT

iptables -t nat -I POSTROUTING -s $PRIVATE -o $DEV -j MASQUERADE

Без него ни у кого не работает интернет.
abc
как настроить впн так, чтобы запросы от клиентов к серверу шли через впн, а трафик в интернет шел без впн?
Да запросто, подключайтесь к vpn не через интернет и тогда трафик в интернет не будет идти через vpn.

p.s. хотя если вам он не для пряток нужен, а для доступа к серверу, тогда есть варианты.
Ошибки в тексте-неповторимый стиль автора©
Клиенты не в одной сети с сервером.

ВПН нужен только для доступа к локальным ресурсам сервера.
изменить port 1194 (какой на***г 53)
убрать push "redirect-gateway autolocal def1 bypass-dhcp"
убрать push "route 192.168.0.0 255.255.255.0"
убрать push "route 192.168.8.0 255.255.255.0
убрать скрипт
всё перезапустить

и должен быть "интернет" и подключение к серверу, а потом нужно будем смотреть маршруты.
Ошибки в тексте-неповторимый стиль автора©
Номер порта ни на что не влияет. А 53 порт дает доступ в интернет с бесплатных вайфаев с авторизацией не проходя авторизацию. На время экпериментов сменю на стандартный 1194.

Убрал пуши, отключил скрипт, перезапустил весь сервер.

С ПК интернета нет. Сервер пингуется по белому айпи, по 10.8.0.1 и 192.168.8.23, в подсеть 192.168.0.* доступа нет.
ip route
default via 10.8.0.9 dev tun0 proto static metric 50
default via 192.168.43.1 dev wlp2s0 proto dhcp metric 600
10.8.0.1 via 10.8.0.9 dev tun0 proto static metric 50
10.8.0.9 dev tun0 proto kernel scope link src 10.8.0.10 metric 50
178.205.142.189 via 192.168.43.1 dev wlp2s0 proto static metric 600
192.168.43.0/24 dev wlp2s0 proto kernel scope link src 192.168.43.246 metric 600
192.168.43.1 dev wlp2s0 proto static scope link metric 600

С андроида есть интернет мимо впн, но локалка сервера не доступна. Сервер пингуется только по 10.8.0.1.
ip route
10.8.0.4/30 dev tun0 proto kernel scope link src 10.8.0.6
10.208.253.180/30 dev rmnet_data1 proto kernel scope link src 10.208.253.181
192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.1
abc
А 53 порт дает доступ в интернет с бесплатных вайфаев с авторизацией не проходя авторизацию.
извиняте но это чушь, какая-то... но кроме что здравого смысла да ни на что не влияет.

abc
default via 10.8.0.9 dev tun0 proto static metric 50
это вроде лишнее, до запуска openvpn есть?

abc
С андроида есть интернет мимо впн, но локалка сервера не доступна. Сервер пингуется только по 10.8.0.1.
верните push "route 192.168.0.0 255.255.255.0" и проверьте "С андроида" доступ в эту подсеть.
Ошибки в тексте-неповторимый стиль автора©
indeviral
это вроде лишнее, до запуска openvpn есть?
Нет, до запуска только это
default via 192.168.43.1 dev wlp2s0 proto dhcp metric 600
192.168.43.0/24 dev wlp2s0 proto kernel scope link src 192.168.43.246 metric 600

indeviral
верните push "route 192.168.0.0 255.255.255.0" и проверьте "С андроида" доступ в эту подсеть.
На андроиде так же есть интернет, пингуется только сервер по 10.8.0.1 и 192.168.8.23. На нулевую подсеть доступа нет, ни пинга, ни через веб-интерфейс.

На ПК интернета нет, локалка как с андроида.
abc
Нет, до запуска только это
Ну раз так, то нужно прописать route_nopull в клиенте и маршруты указывать на стороне клиента.
Ошибки в тексте-неповторимый стиль автора©
Перед уходом пришла мысль вместо Networkmanager-а попробовать родной клиент openvpn. Положил файлы ключей в нужные места и запустил
sudo openvpn /etc/openvpn/client/client.conf
На ПК интернет заработал мимо впн. Сервер доступен по 10.8.0.1 и 192.168.8.23. Осталось разобраться с нулевой подсетью. Но это уже завтра как вернусь на работу.

route_nopull пока не добавлял.
 
Зарегистрироваться или войдите чтобы оставить сообщение.