linux-labs

← Практика

Связать две машины по сети

Сетевое (2 ВМ) · Среднее · 30 мин · 180 баллов

Связать две машины по сети

В задании две машины: node1 (с неё проверяем) и node2 (на ней сервис). На node2 работает веб-сервис на порту 80 и слушает внешний интерфейс. Но с node1 он недоступен: curl http://node2/ висит или отбивается, хотя на самой node2 локально curl http://localhost/ отвечает.

Задача

Сделай так, чтобы:

  1. с node1 проходил TCP-доступ к node2 на порт 80 (например curl http://node2/ возвращает 200);
  2. узлы видели друг друга по сети (пинг / nc до порта проходит);
  3. причина была устранена на сетевом уровне (файрвол / привязка / маршрут), а сервис на node2 остался рабочим.

Подсказки по подходу

  • Локализуй слой: с node1 ping node2, затем доступность порта — nc -vz node2 80. Пинг есть, а порт нет — дело в файрволе или привязке сервиса.
  • На node2 посмотри, на каком адресе слушает сервис: ss -ltnp | grep :80 (0.0.0.0:80 — на всех интерфейсах; 127.0.0.1:80 — только локально).
  • Файрвол на node2: sudo iptables -L INPUT -n --line-numbers — нет ли DROP для :80.
  • Проверяй результат по кнопке «Проверить» — она проверяет доступ именно с node1.

Всё нужное уже установлено. Интернета нет — обе машины в изолированной лаборатории.

Подсказки

Подсказка 1

С node1 разложи проблему по слоям: ping node2 (есть ли связь вообще), затем nc -vz node2 80 (открыт ли порт). Так поймёшь — сеть лежит или порт закрыт.

Подсказка 2

Если пинг идёт, а порт закрыт — причина на node2. Проверь там, на каком адресе висит сервис (ss -ltnp | grep :80) и нет ли блокирующего правила (sudo iptables -L INPUT -n --line-numbers).

Подсказка 3

Открой доступ на node2: убери DROP-правило для порта 80 (sudo iptables -D INPUT <N>) или добавь разрешающее (sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT). Снова проверь с node1: curl -I http://node2/.

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.