@stonewolf

Linux. Через роутер в виртуалку на хосте ICMP идет, а TCP нет. Почему?

Добрый день.

Настроил виртуалку 192.168.2.10 LXC в Убунте, хост 192.168.0.101 через сетевой мост. Всё работает кроме доступа по wifi с устройств (подсеть 192.168.0.0).

На роутере прописал маршрут 66f544580dd15840941708.png.

ping 192.168.2.10 проходит, но wget 192.168.2.10:8123 пишет, что маршрут не найден.
с другой виртуалки (192.168.2.2) и самого хоста работает.

на хосте ip r:
66f54d4822d02466636389.png
iptables:
66f5476f7a6b9902958097.png
iptables -t nat:
66f54afc68445464640150.png

Логи в dmesg с ping пишутся, а с wget нет. Где собака порылась?
  • Вопрос задан
  • 1813 просмотров
Решения вопроса 1
@stonewolf Автор вопроса
Оказывается, в процессе тестов после курения манов добавил и потом забыл почистить и не заметил перенаправление порта в nat на 0.101:
66f649057d075912537487.png
Удалил и всё заработало.

Всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@mvv-rus
Настоящий админ AD и ненастоящий программист
Возможно, прямые и обратные пакеты между 192.168.0.0/24 и 192.168.2.0/24 у вас ходят разными маршрутами. В наше время это проверить сложно, потому что современные устройства любят резать опцию записи маршрута в эхо-пакеты ICMP (в ping она включалось ключем -r 9).
TCP, в отличие от ping, нужно установленное соединение, а роутер (брандмауэр на нем) может контролировать, что соединение установливается правильно. И если он видит пакеты только в одну сторону, то может блокировать соединение.

Для проверки добавьте маршрут в 192.168.2.0/24 через Linux(192.168.0.101) на тот узел в 192.168.0.0/24, с которого вы пробуете wget. На Windows это делается командой route add 192.168.2.0 mask 255.255.255.0 192.168.0.101 (работает до перезагрузки).

Если это решит проблему, то добавьте этот маршрут на постоянку - это можно сделать через DHCP или прописать маршрут вручную напостоянку (в Windows для этого используйте route add -p и далее по тектсту). Можете также попробовать отключить брандмауэр на роутере для внутренней сети (как это сделать и можно ли - это мне неведомо, я модель вашего роутера и что он может не знаю, я такое поведение на MS ISA Server в древности наблюдал).

PS Вообще-то, если подключать виртуалку через именно мост ("на уровне L2"), то она должна иметь/получить адрес из той же подсети, что и хост, но тут я выяснять, что вы там на самом деле сделали, не хочу.
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
А вы не в курсе, что gateway должен быть в той же подсети, что и сам хост?
Адрес 192.168.0.101 - это совсем не подсеть 192.168.2.0/24!
Ответ написан
@wkon
Сетевик, Системщик
Меня смущает вот эта запись:
MASQUERADE ALL * enp3s0 0.0.0.0/0 0.0.0.0/0

Все исходящие пакеты транслируются в адрес исходящего интерфейса.

Вам надо переписать правила iptables, чтобы пакеты идущие из сети 192.168.2.0 в сеть 192.168.0.0 не транслировались.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы