У меня есть два сетевых интерфейса с соответствующими ips
eth0 : 192.168.70.153
eth2 : 192.168.70.155
когда я делаю
route -C
Kernel IP routing cache
Source Destination Gateway Flags Metric Ref Use Iface
192.168.70.155 192.168.70.152 192.168.70.152 0 0 0 eth0
как я могу принудительно установить соединение telnet с 192.168.70.152 через eth2?
Вы хотите Linux Advanced Routing and Traffic Control HOWTO. В частности, раздел о Netfilter & iproute - маркировка пакетов это хорошее место для начала для такого рода вещей.
Вы бы настроили свой маршрут по умолчанию, чтобы пройти через eth0, а затем в /etc/iproute2/rt_tables
добавьте запись, скажем, 200, для "viaeth2". Затем вам нужно настроить маршрутизацию в этой таблице:
ip route add 192.168.70.0/24 dev eth2 src 192.168.70.155 table viaeth2
ip rule add fwmark 1 table viaeth2
Затем вы можете пометить пакеты через iptables, которые должны маршрутизироваться через эту таблицу:
iptables -A PREROUTING -d 192.168.70.152 -t mangle -p tcp --dport 23 \
-j MARK --set-mark 1
Это сделает то, что вы конкретно задали в исходном вопросе. Если вы хотите выполнить более общую балансировку нагрузки между двумя интерфейсами, вам нужно выполнить «связывание» через драйвер «связывания».
Вам нужно будет добавить определенный маршрут для хоста 192.168.70.152.
route add -host 192.168.70.152 dev eth2
В результате весь трафик, предназначенный для 192.168.70.152, будет проталкиваться через eth2. Этого будет достаточно, или для маршрутизации потребуется только telnet?