LINUX.ORG.RU

Как настроить маршрутизацию для определенных адресов?

 ,


0

1

Привет.

Ubuntu 20.04. Поднят openvpn (tun0). Пытаюсь настроить маршруты так, чтобы доступ к определенным ресурсам производился через интерфейс enp3s0 напрямую без впна. Для примера возьмем LOR

ip route add 178.248.233.6/32 dev enp3s0

Правила применяются. В маршрутах вижу

178.248.233.6 dev enp3s0 scope link

Делаю трассу - вижу, что соединение идет через tun0 (первый хоп на 10.8.0.1). Пробовал добавлять метрику 49 (на 1 ниже той, что у маршрута до 10.8.0.1), трасса по прежнему через 10.8.0.1. ЧЯДНТ?


Ответ на: комментарий от TheAnonymous

Дефолтный gw менять? А как это отразится на работе openvpn? Сейчас дефолтный gw он

default via 10.8.0.1 dev tun0 proto static metric 50
DForce
() автор топика
Ответ на: комментарий от DForce

192.168.1.1 это ip роутера, к которому подключен на enp3s0.

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

Без VPN какой шлюз ? Вот через него и надо писать маршрут. Какая метрика у маршрута по умолчанию через VPN ? Метрика кстати в таком случае не решает так как маршруты с масками отличными от /0 являются более специфичными относительно дефолта (more specific).

The_Ketchup ★★
()
Ответ на: комментарий от TheAnonymous
default via 10.8.0.1 dev tun0 proto static metric 50
default via 192.168.1.222 dev enp3s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.4 metric 50
x.x.x.x via 192.168.1.222 dev enp3s0 proto static metric 100
127.0.0.0/8 dev lo scope link
178.248.233.6 via 192.168.1.1 dev enp3s0
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.114 metric 100
192.168.1.0/24 dev enp3s0 proto dhcp scope link src 192.168.1.114 metric 202
192.168.1.222 dev enp3s0 proto static scope link metric 100

Попробовал как во втором маршруте использовать via 192.168.1.222, но ничего не изменилось (старый удалил до добавления).

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

Получается что шлюз на Ethernet интерфейсе: 192.168.1.222 тогда и маршрут надо писать через него.

178.248.233.6 via 192.168.1.1 dev enp3s0

по идее маршрут не через шлюз, его надо удалить

ip route del 178.248.233.6/32 via 192.168.1.1

и добавить

ip route add 178.248.233.6/32 via 192.168.1.222

аналогично вот этому: x.x.x.x via 192.168.1.222 dev enp3s0 (маршрут до VPN сервера)

с метрикой можно не париться так как у вас маски для маршрутов разные (маска имеет больший приоритет чем метрика при выборе маршрута).

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

Ну так и я добавлял

Попробовал как во втором маршруте использовать via 192.168.1.222, но ничего не изменилось (старый удалил до добавления).

Все равно через впн все идет.

DForce
() автор топика
Ответ на: комментарий от The_Ketchup
default via 10.8.0.1 dev tun0 proto static metric 50
default via 192.168.1.222 dev enp3s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.4 metric 50
x.x.x.x via 192.168.1.222 dev enp3s0 proto static metric 100
127.0.0.0/8 dev lo scope link
178.248.233.6 via 192.168.1.222 dev enp3s0
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.114 metric 100
192.168.1.0/24 dev enp3s0 proto dhcp scope link src 192.168.1.114 metric 202
192.168.1.222 dev enp3s0 proto static scope link metric 100

Все по прежнему.

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

В выводе ip route от ТС этот маршрут уже присутствует. Метрика, как я уже писал, не нужна, маска /32 куда более more specific чем default /0.

The_Ketchup ★★
()
Ответ на: комментарий от The_Ketchup
178.248.233.6 via 192.168.1.222 dev enp3s0 src 192.168.1.114 uid 1000
cache

Выглядит правильно, но на деле нет. Я попробовал тоже самое сделать с 2ip.ru

dig 2ip.ru | grep 'ANSWER SEC' -A1
;; ANSWER SECTION:
2ip.ru.                 2296    IN      A       195.201.201.32

ip route | grep 195.201.201.32
195.201.201.32 via 192.168.1.222 dev enp3s0

ip route get 195.201.201.32/32
195.201.201.32 via 192.168.1.222 dev enp3s0 src 192.168.1.114 uid 1000
cache

Но на сайте 2ip.ru висит плашка ip впна. Куки и кеш сбрасывал.

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

Но на сайте 2ip.ru висит плашка ip впна

не правильный способ. Вообще нет ни какой гарантии что скрипт, который определяет ваш IP обращается именно к адресу 2ip.ru, страница не тащить ещё какие-нибудь include и т.п., короче говоря самый правильный вариант это сниффер.

The_Ketchup ★★
()
Последнее исправление: The_Ketchup (всего исправлений: 1)

Желаемый результат можно получить более простым путем, а именно - network namespaces

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

Ethernet интерфейс это интерфейс на котором может быть далеко не один получатель, так что via обязателен(в общей терминологии это Multiple access). Если мы говорим пакет нужно выплюнуть чисто через интерфейс то пишется dev , тогда перед тем как выплюнуть пакет для destination будет сделан arp request.

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

gw это синтаксис команды route ) кроме того, gw это gateway который определяется IP адресом.

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

в одной консоли tcpdump -i any -n icmp

во второй ping 178.248.233.6

как мне кажется - всё должно работать :)

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

default == 0.0.0.0/0 однако 32>0, так что 32 имеет гораздо больший приоритет так как он более специфичный (точный).

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

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

хз

попробуй добавить [inline]proto static[/inline] как в другом правиле

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

dev enp3s0

это лишнее. Роутить можно только в point-tp-point интерфейс, когда точно известена другая сторона. С броадкаст интерфейсом, каким является ethernet, так нельзя, даже если там /30 (может быть можно, если /31, почитать надо). Но, по идее, при наличии via 192.168.1.1 мешать не должно.

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

ip route get 195.201.201.32/32
195.201.201.32 via 192.168.1.222 dev enp3s0 src 192.168.1.114 uid 1000

А трейс туда что показывает? Обязано работать, и следующим хопом обязан быть 192.168.1.222. Так, а он доступен вообще?

arp -n | grep 192.168.1.222 что показывает?

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

broadcast это не важно, важно что он MultiAccess :)

кроме того, можно и dev только тогда будет делаться arp запрос для destination ip, это будет как connected сеть/адрес :)

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

Вопрос: допустим 192.168.1.222 недоступен, нет arp записи, и что ? Разве ядро будет искать другой маршрут, имхо 99,(9)% что нет и будет сгенерировано сообщение о том что destination unreachable. Разве нет ??

На сколько я знаю, винда умеет проверять доступность gw и переключаться на следующий настроенный, в линуксе я такого не видел, согласен что я может быть что-то не знаю.

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

Разве ядро будет искать другой маршрут

Так там два дефолта. Х его з, как оно себя вести будет. В общем поведение непонятное, а дальше надо пробовать.

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

Пойдёт по первому так как у него метрика 50, а у второго 100, они не равнозначны совсем. Доступен или нет шлюз - это не важно. Поведение определенное.

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

Пойдёт по первому так как у него метрика 50, а у второго 100

А маршрут more specific, и дефолты вообще не должны для него работать.

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

немного не понял высказывание…

Ну он же там показал:

ip route | grep 195.201.201.32
195.201.201.32 via 192.168.1.222 dev enp3s0

ip route get 195.201.201.32/32
195.201.201.32 via 192.168.1.222 dev enp3s0 src 192.168.1.114 uid 1000

В этой ситуации пакет должен уходить на 192.168.1.222. А раз не уходит, то там что-то непонятное. Как минимум мне. А в такой ситуации уже просто всё подряд смотреть надо, общее количество информации может на что-то натолкнёт.

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

А, понял. Просто потом выяснилось что определятся IP адрес через сервис 2ip.ru, как по мне это не достоверно ибо думаю что трафик идёт на другие IP адреса нежели домен 2ip.ru, и я попросил tcpdump -i any -n icmp и посмотреть что куда реально уходит, ответа я пока не получил. Я думаю что проблема в способе измерения а не в маршрутизации. Вопрос с трассировкой всё же открыт, она должна быть всё же правильной наверно…

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