Маршрутизация сетевого трафика между 2 подсетями с использованием Raspberry Pi

3648
Mercedes Colomar

У меня проблемы с маршрутизацией трафика между двумя подсетями. С моей текущей настройкой я могу пропинговать хосты в обеих подсетях от моего Rasbperry Pi, но не могу пропинговать хосты из одной подсети в другую (тайм-аут).

По сути, я хотел бы, чтобы узлы из одной подсети имели доступ к узлам в другой подсети. Мой план состоял в том, чтобы сконфигурировать мой Raspberry Pi для обработки почти всей маршрутизации между подсетями, поскольку каждая подсеть находится за собственным базовым домашним маршрутизатором, который не поддерживает статическую маршрутизацию. Затем я бы добавил маршрут на каждом хосте в противоположную подсеть через интерфейс RPi 'gateway'.

Вот моя текущая настройка:

LAN A <---> Маршрутизатор A <---> RPi <---> Маршрутизатор B <---> LAN B

LAN A
Сеть: 192.168.0.0/24
Шлюз: 192.168.0.1


Сеть LAN B : 192.168.1.0/24
Шлюз: 192.168.1.1

RPi
OS: Raspbian
eth0: 192.168.0.4
eth1: 192.168.1.4

Конфигурация интерфейса RPi:

# cat /etc/network/interfaces auto lo iface lo inet loopback  auto eth0 iface eth0 inet static address 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1  # The USB-Ethernet interface 1 allow-hotplug eth1 iface eth1 inet static address 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 

Маршруты RPi:

# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 192.168.1.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth1 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 

Правила брандмауэра RPi:

# iptables -t nat -n -L -v Chain PREROUTING (policy ACCEPT 2711 packets, 147K bytes) pkts bytes target prot opt in out source destination  Chain INPUT (policy ACCEPT 33 packets, 5204 bytes) pkts bytes target prot opt in out source destination  Chain OUTPUT (policy ACCEPT 97 packets, 7344 bytes) pkts bytes target prot opt in out source destination  Chain POSTROUTING (policy ACCEPT 97 packets, 7344 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * eth0 192.168.0.0/24 192.168.1.0/24 0 0 MASQUERADE all -- * eth1 192.168.1.0/24 192.168.0.0/24 

Маршрут хоста 192.168.0.3 (WIN 10):

>route PRINT =========================================================================== Interface List ... ===========================================================================  IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 281 ... 192.168.1.0 255.255.255.0 192.168.0.4 192.168.0.3 26 ... =========================================================================== ... 

В настоящее время это то, что происходит, когда я пингую шлюз противоположной подсети с хоста 192.168.0.3:

>ping 192.168.1.1  Pinging 192.168.1.1 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out.  Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss). 

Глядя на мои настройки, вы, вероятно, могли бы сказать, что я выбрал ружье, но, к сожалению, это не сработало. Могу ли я узнать, что еще мне нужно настроить, или где я ошибся? Дайте мне знать, если мне нужно предоставить больше информации.

Спасибо заранее. :)

1
Почему ты маскируешься? Вы просто хотите соединить две разные подсети. ip_forward включен? dirkt 6 лет назад 1
Предполагая, что все в LANB имеет маршруты для LANA, просто удалите все элементы iptables и включите пересылку `sysctl -w net.ipv4.ip_forward = 1`. Вы можете сохранить этот параметр в `/ etc / sysctl, conf`. Пи не пойдет без него, Paul 6 лет назад 1
Пожалуйста, не обижайтесь, но я думаю, вам нужно узнать о маршрутизации, прежде чем пытаться это исправить. Есть несколько проблем с вашей настройкой - возможно, включая проблемы с кабелями / маркировкой. Конечно, вы не должны использовать NAT, но ваши маршрутизаторы не настроены для правильной маршрутизации (wan-интерфейсы на локальных IP-адресах), и ваш RPI неправильно используется в качестве gw по умолчанию. У вас почти наверняка есть избыточное оборудование и ненужная сложная настройка - что вы пытаетесь сделать? (Переключатель или 2 могут заменить маршрутизаторы или пи, что упростит жизнь). davidgo 6 лет назад 0
Кроме того, какой тип маршрутизаторов? davidgo 6 лет назад 0

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

1
Mercedes Colomar

Полный контекст установки заключается в том, что у нас есть 2 квартиры с собственным подключением к Интернету и локальной сетью, которые мы объединили, используя RPi через перемычку в гараже. Весь смысл этого упражнения состоял в том, чтобы я мог администрировать NAS наверху квартиры, не выходя из здания через сетевой трафик (что также делало бы совместное использование данных более быстрым), а также сохранять настройки Интернета / сети для каждого apt, чтобы они могли продолжать работает в случае, если RPi падает. Поскольку товарным маршрутизаторам в каждой квартире так не хватает опций и возможностей, я был готов пойти на компромисс, вручную добавив маршруты к хостам, которые я бы администрировал из своей подсети.

Это правда, что мне нужно лучше понять работу в сети, и я постоянно нахожусь в процессе, как ИТ-профессионал. Сегодня я говорил с коллегой о своей проблеме, и оказалось, что мне не нужно было добавлять какие-либо маршруты, мне просто нужно было изменить правила брандмауэра, чтобы использовать SNAT вместо MASQUERADE, и подсети начали общаться друг с другом (мне тоже нужно было чтобы разрешить пересылку IPv4, как предложил Пол, спасибо!):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.4 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.1.0/24 -o eth1 -j SNAT --to-source 192.168.1.4 

Полный список iptables:

# iptables -t nat -n -L -v Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * eth0 192.168.1.0/24 192.168.0.0/24 to:192.168.0.4 0 0 SNAT all -- * eth1 192.168.0.0/24 192.168.1.0/24 to:192.168.1.4 

Как видите, при тестировании с хоста 192.168.0.3 трафик остается внутри здания:

>tracert 192.168.1.1  Tracing route to 192.168.1.1 over a maximum of 30 hops  1 1 ms 1 ms <1 ms 192.168.0.4 2 1 ms 1 ms 1 ms 192.168.1.1  Trace complete. 

Большое спасибо за ваши комментарии.