LINUX.ORG.RU
ФорумAdmin

OpenVPN, default gateway и конфликты

 


0

1

Имеем:

OVPN сервер, за ним сеть 10.0.1/24
Клиента, у которого в локалке шлюз по умолчанию по стечению обстоятельств - 10.0.1.1

На адрес 10.0.1.1 в локалке сервера (пусть это будет сам сервер, его интерфейс в 10.0.1/24) будем считать, можно забить.

При подключении к серверу, после route push 10.0.1/24 получаем тыкву без интернета, смс и регистрации, т.к. наш дефолтный гейтвей оказался в сетке, которая туннелируется в OVPN. Есть механизм в самом OVPN, который без написания платформозависимых скриптов позволяет принудительно сохранить маршрут длиной /32 до текущего default gateway перед применением полученных от сервера маршрутов?

Похоже, что только для случая, когда дефолт тоже переадресуется в тонель: --redirect-gateway

AS ★★★★★
()

на клиентской стороне такого механизма нет. только скрипты. на сервере - с десяток вариантов обхода проблемы.

LonleyLockley
()
Ответ на: комментарий от Deleted
       --redirect-gateway flags...
              (Experimental) Automatically execute routing commands to cause all outgoing IP traffic to be redirected over the VPN.

Я правильно понимаю, что при любом наборе флагов, оно завернет мне 0/0 в туннель? Не подходит.

GateKeeper ★★
() автор топика

только хардкор

на клиенте пропиши статически арп запись для правильного 10.0.1.1

zolden ★★★★★
()
Ответ на: только хардкор от zolden

В том-то и дело, что клиент - DHCP. У меня босс может улететь запросто в ебипет и захотеть оттуда с какого-нибудь планшета-телефона-пейджера пару документов подправить на локальном терминале. Для того OpenVPN и поднимается, чтобы закрыть им все, вплоть до ssh на сервера. А между тем, сисадмин отеля может вытащить бинго при совершенно любом конфиге внутренней локалки у меня. В довесок, я не хочу каждый пробрасываемый ресурс туннелить через route more-specific как /32 сеть. Ибо однажды мы забудем вбросить туда какой-нибудь новый поднятый сервер. И, естественно, обнаружится это в 2:00 по Москве, когда все, от начальника отдела до распоследнего эникея будут крепко спать, в то время, как у директора, например, 8 утра и солнце только-только вышло из-за горизонта в Мексиканском заливе. Писать же кучу разных конфигов вкупе с кучей скриптов под все возможные платформы, на которых может пускаться клиентский конфиг - тоже не айс. Пойди потом объясни какому-нибудь партнеру, обновляющему какой-нибудь «Гарант» или «1С», что вчера он не провел обновление, потому что тупой и не догадался вместо файлика «config-linux-debian.ovpn» тыкнуть файлик «config-windows-7.ovpn», поэтому сегодня должен тыкнуть указанный файлик и провести обновление за деньги, оплаченные еще вчера. И так каждый раз (потому что эникей у партнера меняется 2 раза в месяц).

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

Повторяю: мне не нужно туда туннелить интернеты, интернеты мне в туннель не нужно. В туннель. Интернеты. Не требуется. Нужно только 1 сеть пробросить. Одну. И она - не 0/0. Не дефолт гейтвей.

По крайней мере, описание говорит, что 0/0 редиректит. А мне это не надо.

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

Не подходит.

Да, я не вчитался. Подумал про случай, когда IP VPN-сервера в той сети, которую в тонель роутить надо (кстати, я был неправ, в route можно использовать «net_gateway»). А тут про пересечение сетей на клиенте и в локалке за сервером... Это как-то жёстче... Решение сходу - раздавать реальный IP. Но это может быть расточительно...

https://community.openvpn.net/openvpn/ticket/282
Кому интересно, следите за развитием событий.

Да, забавная задача...

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

Решение сходу - раздавать реальный IP. Но это может быть расточительно...

А, стоп. Не спасёт, если своя локалка пересекается по диапазону, так что, и своя должна на реальных быть тогда...

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

Да, забавная задача...

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

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

Мне босс сходу сказал, что «не может быть, чтобы до сих пор никому из
разрабов даже в голову не пришло, что такое может быть,

Кстати запросто. Если народ лазиет, в основном, через GSM модемы, то там могут выделять мелкими сетками. Вероятность попадания в нужный IP не сильно велика... А, ещё, и реальные IP там раздают, как правило. Публичный WiFi с приватными IP стал растространён не так, чтобы сильно давно.

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

Да, забавная задача...

И, в общем-то, простого хорошего решения не видно. Разве что, привязывать интерфейс тонеля к виртуалке, и всё, что нужно рабочего, в виртуалке гонять. ОС-то как разбираться должна, что от неё хотят ?

AS ★★★★★
()

Или ещё вариант: сервисы, которые должны быть доступны снаружи, размещать в двух диапазонах. Скажем, 10... и 172.16... Делать два сервера и пушить разные сети на клиента, а босс пусть тыкает либо одну иконку, либо другую.

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

И, в общем-то, простого хорошего решения не видно

Да я согласен на

route add -host $default_gw metric 1 dev $lan_dev
только, чтоб OpenVPN сам это делал, избавляя меня тем самым от необходимости клепать конфиги отдельно под винду, отдельно под линуксы и прочие железяки. Я таким вот макаром теряю один единственный адрес в туннелируемой сети, вместо вообще полного абздеца с интернетами и OVPN.

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