Маршрутизация / пересылка трафика между перекрывающимися подсетями Linux

367
Wesley Chalmers

Я настроил сеть со следующей топологией:

Gateway (10.0.0.1) | tun0 | |-----------------------| 10.0.0.0/16 | | | tun0 | tun0 Host A (10.0.1.1) Host B (10.0.2.1) | wlan0 | wlan0 | | | 10.0.1.0/24 |----------------| 10.0.2.0/24 | | | | wlan0 | wlan0 | wlan0 Client A (10.0.1.2) Client B (10.0.2.2) Client C (10.0.2.3) 

На данный момент хосты A и B могут пропинговать шлюз и друг друга. Также. каждый клиент может пропинговать хост, напрямую связанный с ним, а также другие клиенты, подключенные к этому хосту. Однако я хотел бы, чтобы каждое устройство могло пропинговать все другие устройства в сети (например, Клиент A может пропинговать клиента B, хост A может пропинговать клиента C, и так далее).

Я попробовал несколько методов настройки каждого хоста, чтобы разрешить пересылку пакетов между клиентами, другими хостами и шлюзом. Первый метод, который я попробовал, - это использование iptables на каждом хосте для пересылки трафика между подсетями. Несмотря на то, что я успешно использовал учебники, такие как этот, на Adafruit, чтобы позволить клиентам пинговать хосты и шлюз, они не позволяли другим хостам пинговать клиентов. Я также пробовал такие решения, как это, для маршрутизации трафика между подсетями, но, похоже, они не работают с перекрывающимися подсетями. Я также попытался создать мостовой интерфейс на каждом хосте, который соединял tun0 и wlan0, но безуспешно.

Я открыт для изменения конфигурации IP-адресов в этой сети при условии сохранения возможности подключения всех устройств ко всем другим устройствам.

0

1 ответ на вопрос

1
Wesley Chalmers

Решение (которое кажется до боли очевидным задним числом) заключается в назначении IP-адресов следующим образом:

 Gateway  | tun0 (10.0.0.1) | |-----------------------| 10.0.0.0/24 | | | tun0 (10.0.0.2) | tun0 (10.0.0.3) Host A Host B  | wlan0 (10.0.2.1) | wlan0 (10.0.3.1) | | | 10.0.2.0/24 |-------------------| 10.0.3.0/24 | | | | wlan0 (10.0.2.2) | wlan0 (10.0.3.2) | wlan0 (10.0.3.3) Client A Client B Client C 

Это помещает соединения шлюза / хоста в отдельную подсеть. В этой конфигурации будут работать учебники, включающие маршрутизацию трафика между двумя подсетями. Маршруты необходимо будет настроить на каждом хосте и на шлюзе (например, ip route add 10.0.3.0/24 via 10.0.3.1).

Возможно, следует добавить, что перекрывающиеся подсети * всегда * указывают на то, что что-то не так с топологией сети. Избегайте, избегайте, избегайте. dirkt 6 лет назад 0