Каждый вывод говорит о той машине, где выполнена команда. Прежде чем чинить, опиши соединение целиком.
Соединение описывает характеристика соединения: адреса откуда и куда, протокол и порты. Здесь это 192.0.2.11 → 192.0.2.12, TCP, порт 8080. Запрос на самой lab-node2 шёл с 192.0.2.12 на 192.0.2.12. Это другое соединение, и его успех о соседе ничего не говорит.
Машины в одной сети /24 обмениваются пакетами напрямую: каждой хватает подключённого маршрута, шлюз не нужен. По уроку о маршрутах: ответ сервер отправляет по своей таблице — это обратный путь. Для обмена нужны обе таблицы: туда — клиента, обратно — сервера.
| Машина | Что на ней проверить |
|---|---|
lab-node1, клиент |
маршрут к серверу, запрос к сайту |
lab-node2, сервер |
слушатель, фильтр, маршрут обратно к клиенту |
sudo ip -n lab-node1 route — короткая форма для команд ip в пространстве. Остальные программы запускают через ip netns exec.
В таблице lab-node1 одна строка: 192.0.2.0/24 dev lab0. Шлюза и default нет. Дойдёт ли пакет до 192.0.2.12?
-
Шлюз ведёт в другие сети. Соседу в той же
/24пакет уходит напрямую, без посредника. -
Ответ идёт по таблице
lab-node2, а в ней такая же подключённая сеть192.0.2.0/24. Без лишних записей ответ вернётся. -
Маршрут по умолчанию нужен для адресов вне известных сетей.
192.0.2.12входит в192.0.2.0/24, иip route get 192.0.2.12покажетdev lab0.
Подключённой сети хватает, чтобы говорить с соседями в ней. Шлюз и default нужны для адресов за пределами 192.0.2.0/24.
Главное в шаге
- Наблюдение относится к машине, где выполнена команда; успех на сервере не проверяет запрос соседа.
- Пакет к серверу выбирает таблица клиента, ответ обратно — таблица сервера.