News:

Welcome to Yggdrasil forum! It is maintained and administrated by Revertron, you can ask me questions in Telegram, Matrix and Fediverse.
This forum is created to provide a platform where your questions and their answers will not get lost like in all messengers, but to be available for all users for years.

Main Menu

Маршрутизация - объясните, плиз

Started by vladimir, May 16, 2022, 01:15:44 AM

Previous topic - Next topic

vladimir

Я не силен в сетях, маршутизации и т.п. Но вот что-то задался вопросом и не знаю, где про это узнать, прочитать.
Буду признателен, если кто-то мне разъяснит.

Вопрос о принципах маршрутизации, о том, как это должно работать и как работает...

Захожу на myip.ru, вижу свой IP.

Пришло в голову сделать так (по аналогии с VPN):
sudo ip route add 178.62.9.171/32 via 8.8.8.8 metric 100 dev eth0
178.62.9.171 - это IP myip.ru

Предполагалось, что зайду сейчас на myip.ru и он покажет мне IP google в качестве моего. Но, маршрут добавился, но не работает. Вопрос: почему? И возможно ли такое вообще, в принципе, взять любой публичный IP и прописать через него маршрут до какого-то узла, и чтобы оно работало? Если такое возможно, другой вопрос: как запретить маршрутизацию через свой компьютер, у которого тоже есть белый IP.

Аналогично с Yggdrasil IPv6:
sudo ip route add 200:6223::d35b:1fd8:be0d:2841/128 via 21e:a51c:885b:7db0:166e:927:98cd:d186 metric 100 dev tun0
Маршрут добавился, но тут отрабатывает по другому. Оно его почему-то игнорирует, всегда идет напрямую до нужного узла, всегда один шаг. Вопрос: почему? Это так реализовано в Yggdrasil? Ну, и тоже, возможно ли так прописывать маршруты и как от этого защищаться.

Третий вариант сложнее с передачей пакетов между интерфейсами, допустим, чтобы выходить в инет через какой-то узел Yggdrasil, на котором задействована маршрутизация между интерфейсами - это возможно?

Revertron

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

vladimir

Revertron, а как этот маскарадинг делается, можно пример? Он для конкретного IP делается или для всех?
И еще, можно как-то найти такой сервер, где сделан этот маскарадинг?

Revertron

Quote from: vladimir on May 16, 2022, 01:14:46 PMRevertron, а как этот маскарадинг делается, можно пример? Он для конкретного IP делается или для всех?
И еще, можно как-то найти такой сервер, где сделан этот маскарадинг?
Маскарадинг включен на серверах VPN.
Ищи в интернете настройку VPN, там будут примеры команд.

N

Quote from: vladimir on May 16, 2022, 01:15:44 AMПришло в голову сделать так (по аналогии с VPN):
sudo ip route add 178.62.9.171/32 via 8.8.8.8 metric 100 dev eth0
178.62.9.171 - это IP myip.ru

Скорее всего, вы и адреса, которые вы прописали находятся в разных сетях. Так это не будет работать.

Глобальная сеть Интернет делится на сегменты, эти сегменты еще на более мелкие сегменты и т.д.

Маршрутизация между сегментами/подсетями осуществляется маршрутизаторами. Т.е., две подсети между собой соединяются с помощью маршрутизатора (программного или аппаратного, или программно-аппаратного).

Маршрутизатор - устройство, которое пересылает пакеты между различными сегментами сети на основе правил и таблиц маршрутизации.

Таблица маршрутизации - это таблица, в которой содержатся соответствия между адресами назначения и интерфейсами, через которые следует отправить пакет данных до следующего маршрутизатора. В таблице маршрутизации маршруты бывают трех типов: маршрут до сети, маршрут до компьютера, маршрут по умолчанию.

Если нет конкретного маршрута до сети или компьютера используется маршрут по умолчанию. Маршрут по умолчанию обычно ведет на шлюз/роутер, который соединяет сегмент сети с другим сегментом. Если до какой-то сети или компьютера в таблице маршрутизации нет маршрута и не указан маршрут по умолчанию, получим  сообщение "no route to host" ("нет маршрута до узла").

Когда маршрутизатор соединяет локальную сеть с глобальной, он может модифицировать загловки IP-пакета, заменяя адреса отправителя и получателя. Это и есть маскарадинг. Нужен он там, где несколько комьютеров в локальной сети выходят в глобальную сеть с одним глобальным IP-адресом. Ну, или в общем случае (VPN, как частном), NAT преобразует заголовки для связи двух сегментов сети (двух подсетей, в каждой из которых свой пул адресов, маска подсети).

По-другому маскарадинг называют NAT - network address translation - таблица трансляции адресов сети. В этой таблице помимо IP-адреса содержатся порты.

Пример таблицы NAT:

Глобальный адресЛокальный адрес
209.165.200.226:1444192.168.1.15:1444
209.165.200.226:1445 192.168.1.26:1444

Ну, так вот, сидите вы у себя дома, в вашей домашней локальной сети, и, допустим, адрес у вас в вашей домашней сети - 192.168.0.3.
Ваша локальная домашняя сеть соединяется с сетью вашего интернет провайдера сначала через ваш домашний роутер, потом может быть еще устройство, которое на дом выделено и т.д. И скорее всего, у вас используется NAT, т.е., у вас "серый" адрес, и для большОго числа пользователей вашего провайдера их глобальный адрес в Интернет один, одинаковый.

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

Если вы выполните команду traceroute 8.8.8.8, вы увидите, через сколько таких шлюзов проходит пакет до указанного адреса.

И вот просто взять и прописать этот конечный узел в качестве шлюза для своего компьютера в своей локальной сети нельзя. Это адрес не из вашей сети. До сети, в которой этот адрес находится еще нужно добраться. И сделать это можно через шлюз по-умолчанию (домашний роутер), далее шлюз провайдера и т.д...


Про Yggdrasil.
Предполагается, что Yggdrasil - это сеть с топологией mesh. И это именно топология, а не что-то иное )
Так вот, эта топология, как правило, предполагает соединение каждого узла с каждым.
И добавлять маршут до другого узла, через какой-то третий смысла не имеет.
Каждый соединен с каждым. Пакет пойдет по кратчайшему пути, от вас к нужному, а не через какой-то третий, четвертый, 10-й...