Я пытаюсь понять, что такое локальная таблица маршрутизации.
Если я добавлю в него случайный адрес с помощью следующей команды:
sudo ip route add to local <any-ip-address> dev <network interface>
Теперь я могу пропинговать этот адрес, но ни один интерфейс, указанный в ifconfig, не использует этот адрес.
Пример:
$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.
--- 192.168.22.22 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
$ sudo ip route add to local 192.168.22.22 dev wlp2s0
$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.
64 bytes from 192.168.22.22: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.22.22: icmp_seq=2 ttl=64 time=0.015 ms
--- 192.168.22.22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.015/0.016/0.018/0.004 ms
Кажется, что он работает как loopback, но из ifconfig интерфейс lo по-прежнему имеет только адрес 127.0.0.1. Если я проверю эту таблицу ip route ls table local
Я вижу следующее:
$ ip route ls table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev wlp2s0 proto kernel scope link src 192.168.0.13
local 192.168.0.13 dev wlp2s0 proto kernel scope host src 192.168.0.13
broadcast 192.168.0.255 dev wlp2s0 proto kernel scope link src 192.168.0.13
local 192.168.22.22 dev wlp2s0 scope host
broadcast 192.168.122.0 dev virbr0 proto kernel scope link src 192.168.122.1
local 192.168.122.1 dev virbr0 proto kernel scope host src 192.168.122.1
broadcast 192.168.122.255 dev virbr0 proto kernel scope link src 192.168.122.1
Так что же такое локальная таблица и в случае с ведьмой я должен ее использовать?
Я где-то читал, что это для широковещательной рассылки и адресов, размещенных на локальной машине, но я не понимаю, зачем нам для этого нужна специальная таблица и когда мне следует добавлять какие-либо записи в эту таблицу.
Спасибо
Прежде всего, как объясняет информация, доступная в Интернете "Локальная таблица - это специальная таблица маршрутизации, поддерживаемая ядром.".
Если вы чувствуете себя действительно смелым сегодня, вы даже можете получить немного информации местныйлы, вот как:
man ip
- поскольку это была команда, с которой вы возились, имеет смысл ожидать, что ее руководство должно содержать некоторые подсказки по этому вопросу. Теперь вы должны четко заметить, что есть так называемые СМОТРИТЕ ТАКЖЕ раздел. Давайте рассмотрим это внимательно - среди прочего, он беззастенчиво упоминает 2 возможных кандидата для дальнейшего расследования в отношении:
ip-route(8)
ip-rule(8)
В общем, у нас сейчас несколько:
man 8 ip-route
s:
local
- назначения назначены этому хосту. Пакеты возвращаются по петле и доставляются локально.
…
На самом деле всегда существует еще одна таблица, которая невидима, но даже более важна. Это
local
стол (ID 255
). Эта таблица состоит из маршрутов для локальных и широковещательных адресов. Ядро поддерживает эту таблицу автоматически, и администратору обычно не нужно ее изменять или даже просматривать.
man 8 ip-rule
s:
Во время запуска ядро настраивает RPDB по умолчанию, состоящую из трех правил:
- Приоритет: 0, Селектор: соответствие чему угодно, Действие: поисковая таблица маршрутизации
local
(ID 255
). Вlocal
table - это специальная таблица маршрутизации, содержащая высокоприоритетные управляющие маршруты для локальных и широковещательных адресов.
Я лично удовлетворен информацией, которую некоторые авторы помещают в процитированные руководства, но если вы все еще голодны, я думаю, теперь вы знаете, как ловить рыбу.
Таблица локальной маршрутизации позволяет системе маршрутизировать к соответствующему интерфейсу для достижения адреса. Маршруты выбираются с использованием наиболее конкретного маршрута (самой маленькой подсети). Однако вы тестируете маршруты, обрабатываемые адресом обратной связи.
Ping отвечает на уровне интерфейса и не требует процесса прослушивания. при проверке связи по адресу, который назначен интерфейсу на хосте, сеть сокращает маршрутизацию до интерфейса обратной связи. Маршрутизация к интерфейсу обратной связи предотвращает отслеживание трафика удаленными серверами. Поскольку вы назначили маршрут локальному взаимодействию, на ping будет отвечать интерфейс обратной связи.
Обычно в таблице маршрутизации есть следующие маршруты:
по умолчанию (0.0.0.0/0): Маршрут к маршрутизатору, который будет направлять трафик на другие неизвестные адреса. Это маршрут, используемый для подключения к Интернету. Это должно маршрутизироваться напрямую к маршрутизатору, хотя есть способы маршрутизировать косвенно, указав промежуточный маршрутизатор.
192.0.2.0/24: (необязательно, полезно только с несколькими интерфейсами), где 192.0.2.0 - сетевой адрес для удаленной подсети, а / 24 - размер новой сети. Это снова будет направлено на маршрутизатор. Это требуется только в том случае, если маршрут направляется маршрутизатором, отличным от маршрутизатора для включающей подсети.
192.0.2.0/24: (Стандарт). значения, как описано выше) Обеспечивает маршрут к присоединенной сети. IP-адрес интерфейса должен находиться в подсети. Это направляет к маршрутизатору, обслуживающему подсеть. Однако соединения с другими хостами в подсети будут маршрутизироваться напрямую, если они не будут переопределены более конкретным маршрутом.
127.0.0.1/8: (Стандарт). Это адрес обратной связи, прикрепленный к псевдоинтерфейсу обратной связи. Эти адреса никогда не должны отображаться на реальном интерфейсе.
Существуют и другие специализированные маршруты, такие как точка-точка и черная дыра. Они используются редко.