У меня следующая установка:
Компьютер с двумя сетевыми картами, подключенный к двум разным маршрутизаторам. Первый маршрутизатор перенаправляет весь внешний трафик, поступающий на порт 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
Это должно сработать.