Назад | Перейти на главную страницу

Маршрутизатор Ubuntu-Server - пересылка / маршрутизация не работает

Думаю, это более или менее общий вопрос о пересылке и маршрутизации с сервером ubuntu или любой системой Linux.

Сервер управляет школьной сетью и имеет 8 сетевых адаптеров - каждый в своей сети.

Я бы хотел:

Я не хочу:

Насколько я понял, простое включение net.ipv4.ip_forward = 1 через sysctl и sysctl.conf должно было помочь ... Но этого не произошло.

Прочитав и попробовав много разных вещей, я попробовал следующее правило iptables.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0 - это сеть, ведущая к другим серверам и Интернету.
И это сработало .. но это правило NAT.

Итак, мой большой вопрос: есть ли вообще способ сделать это без правила NAT? Или:
Что нужно для этого без NAT-правила?

настроить NAT

Не требуется

редактировать каждую таблицу маршрутизации на каждом клиентском ПК в классах.

Изменение маршрутов на клиентских машинах за маршрутизатором Linux не даст ничего полезного. Проблема заключается в том, что хосты в сети сервера не знают, как ответить.

и, наконец, другой шлюз в этой сети ведет в Интернет.

Готов поспорить, что все ваши системы в серверной сети имеют свой шлюз по умолчанию, направленный на граничный маршрутизатор, который обеспечивает им внешний доступ вместо этого нового Linux-сервера.

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

  • Лучшее решение - добавить маршруты к статическим маршрутам на граничном маршрутизаторе.
  • Если вы не можете добавить статические маршруты на пограничном маршрутизаторе
    • Получите лучший роутер
    • Поместите свою серверную сеть в другую сеть за концентратором-маршрутизатором.
    • Вы можете настроить шлюз по умолчанию для всего в сети сервера, чтобы он указывал на ваш концентратор-маршрутизатор.
    • Вы можете добавить дополнительные статические маршруты на каждое устройство в «серверной сети», но это было бы неправильным решением.

Это относительно простая установка ... и Linux справится с этим без проблем.

Вы, вероятно, страдаете одной или двумя проблемами.

1) Нет обратных маршрутов к этому «роутеру».

Чтобы маршрутизатор выполнял свою работу должным образом ... каждое устройство должно иметь маршрут к этому маршрутизатору. (либо напрямую ... либо подключенного к другому маршрутизатору, который знает об этом.)

Вы можете исправить это относительно просто, добавив обратный маршрут в «Интернет-маршрутизатор» всех сетей, подключенных к «Linux-маршрутизатору». Существуют протоколы маршрутизации, которые могут сделать это за вас автоматически, но в небольших средах (таких как эта) они, как правило, намного больше работают, чем того стоит.

2) Смешивание частного и публичного адресного пространства. Как только ваш пакет покидает общедоступное интернет-пространство ... лучше иметь источник с NAT с общедоступным IP-адресом ... или быть законным с общедоступного IP-адреса. Адреса частной сети не маршрутизируются из общедоступного Интернета.

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