Как настроить проброс портов через несколько сетевых интерфейсов на Ubuntu?

Как настроить сервер с двумя сетевыми интерфейсами на Ubuntu, чтобы проброс портов работал одновременно с двух роутеров, а интернет подключение происходило только через один из интерфейсов?
  • 8 июня 2024 г. 20:21
Ответы на вопрос 2
Для настройки проброса портов через несколько сетевых интерфейсов на Ubuntu, вы можете использовать утилиту iptables. Вот инструкция по настройке:

1. Убедитесь, что у вас установлен пакет iptables:
```
sudo apt-get install iptables
```

2. Создайте правило iptables для каждого интерфейса, через который вы хотите пробрасывать порты. Например, если у вас есть интерфейсы eth0 и eth1, вы можете создать правила следующим образом:
```
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport <порт> -j DNAT --to-destination <IP адрес>:<порт>
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport <порт> -j DNAT --to-destination <IP адрес>:<порт>
```

3. Сохраните правила iptables, чтобы они применялись после перезагрузки сервера:
```
sudo iptables-save > /etc/iptables.rules
```

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

- Удалите маршрут по умолчанию через один из интерфейсов:
```
sudo ip route del default via <IP адрес интерфейса>
```

- Добавьте новый маршрут по умолчанию через другой интерфейс:
```
sudo ip route add default via <IP адрес интерфейса>
```

- Проверьте подключение к интернету:
```
ping google.com
```

5. Для того, чтобы все настройки применялись после каждой перезагрузки, вы можете добавить команды настройки в файл /etc/rc.local:
```
sudo nano /etc/rc.local
```
и добавьте следующие строки перед строкой "exit 0":
```
iptables-restore < /etc/iptables.rules
ip route del default via <IP адрес интерфейса>
ip route add default via <IP адрес интерфейса>
```

Сохраните файл и перезапустите сервер:
```
sudo reboot
```

После выполнения этих шагов, ваш сервер будет настроен так, чтобы проброс портов работал одновременно с двух роутеров, а интернет подключение происходило только через один из интерфейсов.
Это решается таблицами маршрутизации, маркировкой соединений через mangle правила, если кратко, то должно выглядить как-то так: 
ip ru a table 1 fwmark 1
ip r a default via <1 ips gw> t 1
ip ru a table 2 fwmark 2
ip r a default via <2 ips gw> t 2
iptables -t mangle -I PREROUTING -m conntrack --ctstate NEW -i <eth ips 1> -j CONNMARK --set-xmark 1
iptables -t mangle -I PREROUTING -m conntrack --ctstate NEW -i <eth ips 2> -j CONNMARK --set-xmark 2
iptables -t mangle -A PREROUTING -m connmark --mark 1 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -m connmark --mark 2 -j MARK --set-mark 2
Похожие вопросы