LINUX.ORG.RU

Openvpn не тунелирует трафик при подключении сам к себе

 ,


0

1

Прошу не кидаться помидорами. Есть vps, допустим у него адрес IP 1.2.3.4 на нем запущен сервер openvpn.

Всё работает, всё хорошо. Трафик тунелируется, шифруется, роскомнадзор плачет когда я на рутрекере сижу.

Но если я подключаюсь через этот openvpn к различным вебинтерфейсам своего vps с IP 1.2.3.4, то трафик не тунелируется и идет напрямую. Вебинтерфейсы показывают, что я захожу с IP провайдера.

Сдается мне, что openvpn-клиент специально так делает если подключение идет по адресу на котором поднят сервер.

Кто скажет как это исправить?

Пишу с мобилы, конфиги выложу позже.

Тебе нужно 2 айпишника. На один вешаешь впн, на второй вешаешь свои сервисы. Либо у себя заворачивай файрволлом порты сервисов с внешнего айпи на приватный адрес сервера, если конечно твои сервисы биндят все интерфейсы.

imul ★★★★★ ()

А вот заворачивать трафик до интерфейса поверх которого ходит впн внутрь впн не выйдет.

imul ★★★★★ ()
Ответ на: комментарий от imul

Всё уже разобрался. Для подключения к внутренним ресрсам VPS надо использовать внутренний IP Openvpn, который на tun0

Maksimko ()
Ответ на: комментарий от imul

А правда, кто-нибудь знает, как это нормально можно сделать в Linux? Мне на ум приходит только несколько таблиц маршрутизации, source routing и маркировка трафика

На Android, с его VPN API, это предусмотрено, и трафик маршрутизируется в VPN полностью. На Windows, с помощью небольшого хака, тоже можно сделать.

ValdikSS ★★★★★ ()
Ответ на: комментарий от ValdikSS

Зачем так сложно? Просто пропиши маршрут до впн сервера через нужный интерфейс, тогда дефолт можно завернуть в впн. Если интерфейсов несколько, то как-то придется этот маршрут переключать, но это тоже решаемо.

imul ★★★★★ ()
Ответ на: комментарий от ValdikSS

Хотя, если у тебя впн сервер и веб на одном айпи и доступ к вебу надо будет завернуть, то простой способ не сработает.

imul ★★★★★ ()
Ответ на: комментарий от imul

Это как? У меня OpenVPN, скажем. Маршрут по умолчанию через VPN, но маршрут до сервера VPN через интерфейс с интернетом. Каким образом мне сделать так, чтобы трафик шел до IP-адреса VPN-сервера через VPN тоже?

ValdikSS ★★★★★ ()
Ответ на: комментарий от ValdikSS

Сейчас я пишу это сообщение с такой таблицей маршрутизации:
default via 10.1.1.6 dev tun0
10.1.1.0/24 via 255.255.255.252 dev tun0
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.80 metric 600
194.87.92.77 via 192.168.1.1 dev wlo1
255.255.255.252 dev tun0 proto kernel scope link src 10.1.1.6
и понятно, что веб и почта, висящие на 194.87.92.77 внутрь тоннеля не попадут.
Ты же имеешь в виду вариант, когда всё идёт в тоннель, кроме адреса и порта впн-сервера. И я изначально думал, что также хочет автор темы, когда предлагал ему второй айпишник для впн-сервера.

imul ★★★★★ ()
Ответ на: комментарий от imul

Ты же имеешь в виду вариант, когда всё идёт в тоннель, кроме адреса и порта впн-сервера.

В целом да, чтобы обращения, как в вашем случае, на 194.87.92.77 тоже шли через подключенный VPN. Это можно решить через policy routing или отдельным сетевым неймспейсом, но не сказать, что это просто.

Автор темы хочет того же самого.

ValdikSS ★★★★★ ()
Ответ на: комментарий от ValdikSS

А так ли надо пускать через впн вообще весь траффик? Может просто пустить в отдельном сетевом неймспейсе «подозрительное» приложение?

Делаем скриптик:
install -d /etc/netns/VPN
echo «nameserver 8.8.8.8» > /etc/netns/VPN/resolv.conf
ip netns add VPN
ip link set netns VPN dev tun0
ip netns exec VPN ip addr add 10.1.1.6/30 dev tun0
ip netns exec VPN ip link set up dev tun0
ip netns exec VPN ip route add default via 10.1.1.6
ip netns exec VPN ip a
ip netns exec VPN ip r
ip net exec VPN sudo -u mike tracepath -n ya.ru
Пускаем (от рута, но можно и переделать):
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.1.1.6/30 scope global tun0
default via 10.1.1.6 dev tun0
10.1.1.4/30 dev tun0 proto kernel scope link src 10.1.1.6
1?: [LOCALHOST] pmtu 1500
1: 10.1.1.1 5.573ms
1: 10.1.1.1 5.142ms
2: 194.87.92.1 5.831ms
3: no reply
4: no reply
5: no reply
6: no reply
^C

imul ★★★★★ ()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

PS: хотя, если сразу логинить пользователя в нужный неймспейс, то его процессы должны выполняться в том же неймспейсе? Тогда совсем просто.

imul ★★★★★ ()
Ответ на: комментарий от imul

Мне нужно, чтобы через VPN шел весь трафик. Сейчас у меня через VPN идет весь трафик, кроме трафика на IP VPN-сервера, а на нем еще запущены другие сетевые сервисы, к которым мой ноутбук подключается, и которые идут в обход VPN, т.к. маршрут до IP VPN-сервера идет через провайдера. «Подозрительных» приложений у меня нет.

ValdikSS ★★★★★ ()
Последнее исправление: ValdikSS (всего исправлений: 1)
Ответ на: комментарий от ValdikSS

У меня почему-то фейлится команда
ip link set dev wlo1 netns VPN
поэтому с проверкой облом :(
А так идея примерно такая:
install -d /etc/netns/VPN
echo «nameserver 8.8.8.8» > /etc/netns/VPN/resolv.conf
ip netns add VPN
ip link set dev wlo1 netns VPN
ip netns exec VPN ip addr add 192.168.1.80/24 dev wlo1
ip netns exec VPN ip link set up dev wlo1
ip netns exec VPN ip route add default via 192.168.1.1
ip netns exec VPN openvpn --config /etc/openvpn/vpn.conf &
sleep 10
ip route del default
ip route add default via 10.1.1.6 dev tun0

imul ★★★★★ ()
Ответ на: комментарий от ValdikSS

Да уже и как-то не особо сложно. Главное мануал до конца дочитать. :)

imul ★★★★★ ()
Ответ на: комментарий от imul

Я про общий подход с неймспейсами. Я думал, что, может, есть какой-то более «правильный» способ, о котором я не знаю (без неймспейсов, policy routing и чего-то другого), и который не нужно настраивать вручную каждый раз.

ValdikSS ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.