Связать две машины по сети
Сетевое (2 ВМ) · Среднее · 30 мин · 180 баллов
Связать две машины по сети
В задании две машины: node1 (с неё проверяем) и node2 (на ней сервис). На node2
работает веб-сервис на порту 80 и слушает внешний интерфейс. Но с node1 он
недоступен: curl http://node2/ висит или отбивается, хотя на самой node2 локально
curl http://localhost/ отвечает.
Задача
Сделай так, чтобы:
- с node1 проходил TCP-доступ к node2 на порт 80 (например
curl http://node2/возвращает 200); - узлы видели друг друга по сети (пинг /
ncдо порта проходит); - причина была устранена на сетевом уровне (файрвол / привязка / маршрут), а сервис на 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-ВМ для задания — обычно пара секунд. После работы её можно остановить.