LINUX.ORG.RU

Raspberry Pi3 VPN + USB модем запустить весь исходящий трафик через PPP0

 , ,


0

2

Добрый день, уважаемые, стоит задача подключаться по oVPN к Raspberry, и дальше трафик уже должен идти через сеть мобильного оператора. Т.е. Raspberry подключена по wifi к роутеру (c доступом в интернет, на котором проброшен порт для SSH и oVPN) также в нее воткнут USB модем. При коннекте по oVPN внешний IP = IP wifi роутера, а нужно чтобы внешний IP = IP сессии USB модема (интерфейс PPP0). Грубо говоря мы коннектимся через wlan0, а дальше трафик должен идти по ppp0. Как это сделать? wlan0 IP 192.168.1.7 gw 192.168.1.1 tun0 IP 10.8.0.1 ppp0 IP *.*.*.* gw 10.64.64.64

Меняйте шлюз по умолчанию. то есть в начале нужно добавить в таблицу маршрутизации маршрут до сервера VPN через ваш внутренний шлюз сети wi-fi. Затем удаляете маршрут по умолчанию из таблицы маршрутизации и добавляете в таблицу маршрутизации маршрут проложенный через шлюз VPN сети тогда весь трафик который не относится к вашей внутренней wi-fi сети будет идти через vpn-соединение.

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

изменение маршрутизации сейчас таблица выглядит так:

http://prntscr.com/o0tu5f

а должен быть таким?:

http://prntscr.com/o0tyyc

я правильно понял?

т.е.:

sudo route delete default gw 192.168.1.1 wlan0

sudo route add -net 10.8.0.0 netmask 255.255.255.0 gateway 192.168.1.1 tun0

sudo route add default gw 10.64.64.64 wlan0

так? или я что-то не правильно понял...

и в таком случае если отвалится коннект на ppp0 я смогу подконнектится по SSH и поднять его? Заранее извините за возможно глупые вопросы, только начинаю разбираться с linux и маршрутизацией…

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

Действия по шагам:

- подключаетесь к впн;

- прокладывание маршрут до vpn сервера через 192.168.1.1;

- удаляете маршрут 0.0.0.0;

- добавляете маршрут 0.0.0.0 через ip адрес впн сервера в впн сети[/].

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

Действия по шагам:

1) подключаетесь к впн;

2) прокладывание маршрут до vpn сервера через 192.168.1.1;

sudo route add -net 10.8.0.0 netmask 255.255.255.0 gateway 192.16.1.1 tun0

3) удаляете маршрут 0.0.0.0; sudo route delete default gw 192.168.1.1 wlan0

4) добавляете маршрут 0.0.0.0 через ip адрес впн сервера в впн сети[/].

sudo route add default gw 10.8.0.1 wlan0

Правильно?

UZver81 ()
Ответ на: комментарий от infomeh

т.е. если IP 192.168.1.7 2) прокладывание маршрут до vpn сервера через 192.168.1.1;

sudo route add -net 10.8.0.0 netmask 255.255.255.0 gateway 192.16.1.1 tun0 и добавить: sudo route add -host 192.168.1.7 gw 192.168.1.1 dev tun0

я интерфейсы не перепутал (wlan0 b tun0)?

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

вы понимаете терминологию что сервера есть его внешний айпи адрес скажу так реально сети по которому вы подключаетесь клиент к нему. И есть IP адрес VPN сети. Когда вы подключились клиентом поднялся виртуальный интерфейс и после этого tap интерфейс получил ip адрес уже из внутренней VPN сети в виртуальной сети.

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

я наверное плохо объяснил: мой хост и есть ВПН сервер, у Raspberry 3 сетевых интерфейса: wlan0 c IP 192.168.1.7 гейт 192.168.1.1 (по этому интерфейсу и коннектимся к впн серверу) tun0 c IP 10.8.0.1 (впн сервер) ppp0 c IP ну там как повезет, гейт 10.64.64.64

UZver81 ()
  1. Забудь про route, netstat. Это тулзы из 90-х. Надо использовать ip ro.
  2. Твоя таблица рутинга должна выглядеть так:
ip ro|grep default
default via 10.64.64.64 dev ppp0  proto static  metric 100 
default via 192.168.1.1 dev wlan0  proto static  metric 600

или так

default dev ppp0 scope link  metric 100
default via 192.168.1.1 dev wlan0  proto static  metric 600
Bers666 ★★★★ ()
Ответ на: комментарий от Bers666

Внимание на метрики, когда отвалится ppp0, то останется метрика 600/wlan0, и интернет будет.
По SSH через wlan0 всегда можно будет зайти, даже при включенном ppp0.

Bers666 ★★★★ ()
Ответ на: схема от UZver81

Скажите, чей трафик вы хотите пускать через впн и что вы под этим понимаете?

Понимаете, впн - это сеть, а значит, что есть как минимум два участника сети впн, сервер и клиент.

infomeh ()

Не слушайте советы выше, они глупые. policy based routing - вам в помощь. Нагуглите легко. Кратко для wlan0 defgw прописываем в отдельной таблице, не в main. Далее ip rule отправляем адреса клиентов ovpn в нее.

anc ★★★★★ ()
Ответ на: изменение маршрутизации от UZver81

Хм, может вы посчитали мой пост за «стеб». Но это не так. Повторю ещё раз «policy based routing», это решение вашего вопроса. Без стеба/шуток/и-тому-подобного. И это единственное решение вашего вопроса.
ЗЫ Хотя знаю ещё вариант костылестроениия, но это точно не правильно будет. :)

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

Мальчик ты дебил? (c) Простите вам ТС уже и попу показал схему нарисовал и все описал ещё в топике, банальная схема двух провайдеров, на prov1 у него висит ovpn сервер а выходить клиенты ovpn должны через prov2, что не понятно?
ЗЫ Я бы предположил что бы издеваетесь над ТС, если бы не ваши рекомендации. Хотя... Может такие «тонкие» что я не распарсил...Тогда извините.

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

нагуглил на Cisco, ну и на Centos 6

А разве вот так не сработает? Использование маркировки пакетов при помощи iptables:

Нам нужно, чтобы пакеты на 5055 порт (сервер oVPN) уходили только через 10.64.64.64. Для этого делаем следующее: # iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 5055 -j MARK --set-mark 0x2

# ip route add default via 10.64.64.64 dev ppp0 table 102

# ip rule add fwmark 0x2/0x2 lookup 102

Первой командой маркируем все пакеты, идущие на 5055 порт. Второй командой создаем таблицу маршрутизации. Третьей командой заворачиваем все пакеты с указанной маркировкой в нужную таблицу.

UZver81 ()
Ответ на: нагуглил на Cisco, ну и на Centos 6 от UZver81

Стоп! Вот тут я потерял нить разговора.
Кто должен быть defgw для всего кроме клиентов ovpn ? По вашему описанию это wifi роутер. Я ошибся? Или наоборот все должно идти через «мопед» а только ovpn и ssh работать через wifi?

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

изменение маршрутизации

Может я костноязычен, попробую еще раз: мне нужно чтобы трафик подключенных клиентов oVPN уходил через ppp0 (мопед), но была возможность подключиться по SSH (передернуть коннект ppp0, рестартануть сервисы и т.д.) через wlan0

Вот что смог нагуглить: Пользовательские таблицы маршрутизации нужно дописать в конец файла /etc/iproute2/rt_tables # sudo mcedit /etc/iproute2/rt_tables

10 vpnclient

Добавляем маршрут по умолчанию в созданную пользовательскую таблицу маршрутов. В таблицу vpnclient добавим маршрут через сотового провайдера:

ip route add default via dev wlan0 10.64.64.64 table vpnclient

ip rule add to 10.8.0.0/8 table vpnclient Так правильно?

UZver81 ()
Ответ на: изменение маршрутизации от UZver81

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

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

клиенты ovpn

нет, они из инета приходят, пробовал оба Ваши предложения: sudo ip route add default via 10.64.64.64 dev ppp0 proto static metric 100

sudo ip route add default dev ppp0 scope link metric 100

не канает :( , отваливается коннект (малина в 5-ти км и передернуть некому) причем если передернуть питание default via 192.168.1.1 dev wlan0 src 192.168.1.7 metric 303

UZver81 ()
Ответ на: комментарий от anc

Ну тогда помоги ему, объясни что делать, потому что у него по вашим советам всё отваливается.

Пока он не распишет схему кто, откуда и куда подключается ему помочь невозможно.

Изначально я вообще пришёл к выводу, что малина - это клиент, который подключается к VPN серверу в сети.

Потом оказалось, что это сервер.

И финалом оказалось, что к этому серверу коннектятся клиенты из Internet.

В общем, пока он не распишет что у него есть и что он хочет, то помощи не дождётся.

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

И вообще может оказаться, что ему всего-лишь нужно, что бы через его VPN была доступна сеть 192.168.1.*/24.

В этом случае нужно вообще добавлять маршрут клиентам и нужно всего навсего в настройках VPN сервера прописать соответствующую строчку.

Но тут есть нюанс, у клиентов их внутренняя локальная сеть может тоже оказаться 192.168.1.0/24.

Так что вперёд помогай пытаясь угадать, что ему нужно.

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

потому что у него по вашим советам всё отваливается.

По моим? правда чтоли? а я не заметил, бывает. Хотя может подскажите где именно это было?

Пока он не распишет схему кто, откуда и куда подключается ему помочь невозможно.

Тут честно говоря у меня парсер сработал даже на описанное в топике, но это не показатель, без шуток.
Однако вот вам ответы от ТС ниже:

схема
http://prntscr.com/o0x9hh
комп по ВПН коннектится к малине по доменному имени host.ddns.net (так как IP динамический) и дальше весь трафик должен идти через мобильную сеть (usb модем)

wtf Что вам ещё надо в этой схеме пояснить?

anc ★★★★★ ()
Ответ на: клиенты ovpn от UZver81

малина в 5-ти км и передернуть некому

Есть старая народная примета «править fw на удаленном сервере, к поездке». С роутингом та же фигня только умноженная на 2.
И 5км это вообще не о чем, в летнее время пешочком пройти, да хоть н-цать раз, ножки разомнете. Или «вам» на такое расстояние «вертолет надо заказывать?»
В целом, если нет возможности/не-удобно провести тесты на целевой системе, поднимаем виртуалки на которых все настраиваем, тестируем и только потом "в прод 5км и там окончательно проверяем".

anc ★★★★★ ()