У меня есть сервер Linux, на котором работает определенная служба, прослушивающая один порт TCP. Сервер Linux подключается к Интернету с помощью соединения PPP, а также действует как маршрутизатор для локальной сети с использованием соединения Ethernet. Я поддерживаю работающий брандмауэр на этом сервере и управляю им с помощью пакета Shorewall.
Недавно я получил еще одну интернет-ссылку, которую я могу использовать в качестве избыточного IP-адреса для моих клиентов, чтобы подключиться к этой услуге и использовать ее. Этот интернет-провайдер предоставляет мне модем, который должен подключаться к моему коммутатору локальной сети и имеет IP-адрес 192.168.1.10
. Я настроил этот модем для перенаправления служебного порта на мой сервер, который находится в 192.168.1.2
.
Проблема в том, что пользователи не могут подключиться к серверу через новое соединение, конфигурация маршрутизации на новом модеме ограничена (я не могу сказать, чтобы он выполнял SNAT), и я не знаю, какая конфигурация мне нужна на брандмауэре на сервере.
Проще говоря, мне нужно сообщить брандмауэру на сервере, когда пакеты приходят от 192.168.1.10
на порт 1234 отправьте ответы обратно на 192.168.1.10
, несмотря на IP-адрес назначения.
Моя лучшая ставка, так далекая от моих поисков, это http://www.shorewall.net/MultiISP.html что требует игры с маршрутами сервера.
Есть ли более простой способ сделать это, желательно с помощью iptables и shorewall?
Редактировать:
Локальная сеть для локальных пользователей находится по адресу 192.168.1.0/24
. Я могу изменить IP-адрес нового маршрутизатора, если это поможет.
Я хочу, чтобы новая ссылка действовала так же, как избыточный IP-адрес, который я добавлю в качестве псевдонима к DNS, чтобы клиенты могли опробовать его в циклическом режиме, когда старый IP-адрес выходит из строя, что позволяет достичь уровня избыточности и сбоев толерантность. Исходящие интернет-соединения из локальной сети и сервера просто должны проходить через старую ссылку, и не имеет значения, выйдет ли она из строя.
К сожалению, на сервере есть только два порта Ethernet, один используется для старого модема, а другой - для коммутатора локальной сети. Так что свободных портов нет, но если это единственное решение, я могу добавить еще одну сетевую карту.
Сервер Linux действует как маршрутизатор и брандмауэр. Он также запускает прозрачный прокси-сервер squid для локальной сети, если это то, что вы подразумеваете под прокси.
Чтобы упростить задачу и избежать конфликтов, Вам необходимо сделать следующее:
1- Измените диапазон IP-адресов нового маршрутизатора, скажем, 172.20.1.0/24 2- Добавьте новый интерфейс на сервер. Назначьте ему ip диапазона роутера.
Router 172.20.1.1 <----------> Linux Box 172.20.1.2
3- Используйте iproute2 для создания новой таблицы маршрутизации.
On that table set the default gateway to 172.20.1.1
Use ip rule command to add all packets returning from new internet connection
to the new created table.
Предполагая, что имя таблицы - NewLink, ip rule add from 172.20.1.2 table NewLink
Используйте правило IP, добавьте группу пользователей в новое соединение:
ip rule add from 192.168.1.0/28 table NewLink
[just a group of ips to allow them to use the new link]
4- Используйте исходный наттинг вместо MASQUARGE, который вы, скорее всего, используете. для подключения каждой группы IP-адресов к их указанному Интернет-соединению.
Вам нужно пройти шаги, которые я упомянул выше, и поискать дополнительную информацию. Мне потребовалось больше недели, чтобы заставить его работать, но теперь требуется всего 5 минут, чтобы настроить нового провайдера.