Маршрутизация через шлюз в другую подсеть

К сожалению, у меня очень мало практики с маршрутизацией в Linux, а также я не смог правильно сформулировать свою проблему для поиска.

Поэтому я объясню проблему здесь. На картинке ниже вы видите топологию моей сети. Цель состоит в том, чтобы клиентское устройство с IP-адресом 10.0.0.50 могло получить доступ к целевому устройству с IP-адресом 192.168.0.1.

Picture of the network topology

Установка правильного маршрута на клиентском устройстве не является моей целью, поскольку может быть несколько клиентских устройств с нужен доступ к 192.168.0.1. Из-за того, что у меня нет доступа ко всем клиентам, не стоит настраивать их индивидуально для достижения цели.

До сих пор я пытался установить маршрут на шлюзе 10.0.0.1 с маршрутом добавить -net 192.168.0.0/25 gw 10.0.0.99 . Шлюз (должен быть) правильно настроен для пересылки пакетов, потому что я использую его как шлюз для всей сети для доступа в Интернет. Итак, iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE установлен, а также переадресация ip с echo 1> / proc / sys / net / ipv4 / ip_forward . Маршрут показывает следующие выходные данные на шлюзе :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         123.123.123.1   0.0.0.0         UG    202    0        0 eth0
10.0.0.0        *               255.255.255.128 U     0      0        0 br0
123.123.123.2   *               255.255.255.252 U     0      0        0 eth0
192.168.0.0     10.0.0.99       255.255.255.128 UG    0      0        0 br0

Конфигурация на сервере 10.0.0.99 включает правила iptable для маскарадинга и пересылки IP. route показывает следующие выходные данные на сервере :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         tower           0.0.0.0         UG    204    0        0 br0
default         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
10.0.0.0        *               255.255.255.128 U     0      0        0 br0
192.168.0.0     *               255.255.255.128 U     0      0        0 wlan0

С настройкой, описанной выше, я могу пинговать 192.168.0.1 как с сервера, так и со шлюза, но клиенты не в состоянии это сделать. Трассировка для проверки того, что происходит, застревает на шлюзе 10.0.0.1 и больше не работает.

Я также попытался установить iptables -A POSTROUTING -t nat -o br0 -j MASQUERADE на шлюзе, чтобы проверить, не в этом ли проблема, но это правило не помогло, поэтому я удалил его снова.

Что мне здесь не хватает? Пожалуйста, помогите мне. Большое спасибо!

-1
задан 7 May 2019 в 11:57
1 ответ
  1. Если вы используете линукс, остановитесь, используя ifconfig и маршрут. Используйте ip (man ip и читайте учебники iproute).
  2. Настройте маршрут на интернет-шлюзе: ip маршрут добавляет 192.168.0.0/25 через 10.0.0.99
  3. Отключите перенаправление: sysctl -w sys.net.ipv4.conf.br0.send_redirects.
  4. Проверка маршрута командой ip маршрут получит 192.168.0.1 из 10.0.0.50 если бр0. Вывод должен выглядеть как
192.168.0.1 from 10.0.0.50 via 10.0.0.99 dev br0 
    cache iif br0
  1. Опционально добавить правило SNAT/MASQUERADE, чтобы ответы передавались через интернет-шлюз, а не напрямую от сервера клиенту:
iptables -t nat -A POSTROUTING \
         -o br0 \
         --src 10.0.0.0/24 --dst 192.168.0.0/25 \
    -j SNAT --to 10.0.0.1
  1. Включить переадресацию на сервере: sysctl -w sys.net.ipv4.ip_forward=1
  2. Вышеуказанных шагов в большинстве случаев достаточно. Опционально, если у цели есть другой шлюз по умолчанию (не через сервер), вы можете добавить маршрут на цель (ip маршрут добавляет 10.0.0.0/24 через 192.168.0.X, где 192.168.0. X адрес сервера в подсети 192.168.0.0/25) или настройте NAT на самом сервере (iptables -t nat -A POSTROUTING -o wlan0 --src 10.0.0.0/24 --dst 192.168.0.1 -j MASQUERADE).
  3. Проверьте соединение:
    • на шлюзе пинговать сервер и цель.
    • на сервере пинговать шлюз и цель.
    • используйте tcpdump для устранения будущих проблем.
1
ответ дан 5 December 2019 в 19:38

Теги

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