К сожалению, у меня очень мало практики с маршрутизацией в Linux, а также я не смог правильно сформулировать свою проблему для поиска.
Поэтому я объясню проблему здесь. На картинке ниже вы видите топологию моей сети. Цель состоит в том, чтобы клиентское устройство с IP-адресом 10.0.0.50 могло получить доступ к целевому устройству с IP-адресом 192.168.0.1.
Установка правильного маршрута на клиентском устройстве не является моей целью, поскольку может быть несколько клиентских устройств с нужен доступ к 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
на шлюзе, чтобы проверить, не в этом ли проблема, но это правило не помогло, поэтому я удалил его снова.
Что мне здесь не хватает? Пожалуйста, помогите мне. Большое спасибо!
man ip
и читайте учебники iproute).ip маршрут добавляет 192.168.0.0/25 через 10.0.0.99
sysctl -w sys.net.ipv4.conf.br0.send_redirects
.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
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
sysctl -w sys.net.ipv4.ip_forward=1
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
).