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

Как направить весь трафик с определенного порта на определенный сетевой интерфейс?

У меня следующая установка:

Компьютер с двумя сетевыми картами, подключенный к двум разным маршрутизаторам. Первый маршрутизатор перенаправляет весь внешний трафик, поступающий на порт 5122, на порт 22. Так что я могу подключиться к машине с помощью ssh.

Я хочу использовать первый маршрутизатор только для ssh-соединений. Ничего больше. Поэтому я хочу, чтобы весь остальной трафик направлялся через второй маршрутизатор.

Как я могу это сделать?

Как это:

1. Отметить пакеты

Установите отметку на каждом пакете, который направляется на порт 5122.

iptables -A PREROUTING -t mangle -p tcp --dport 5122 \
  -j MARK --set-mark 1

В качестве альтернативы, если вы хотите ограничить его пакетами с IP-адресом назначения 10.10.10.10:

iptables -A PREROUTING -t mangle -p tcp -d 10.10.10.10/32 --dport 5122 \
  -j MARK --set-mark 1

2. Создайте таблицу / правило маршрутизации.

Создайте таблицу маршрутизации с правилом, которое будет использоваться для отмеченных пакетов.

echo 201 ssh5122.out >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table ssh5122.out

3. Добавьте маршрут

Добавьте маршрут, соответствующий таблице маршрутизации.

ip route add default via $ssh_router_ip dev $ssh_router_interface \
  dev table ssh5122.out

Это должно сработать.