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

IP через определенный сетевой интерфейс

У меня есть два сетевых интерфейса с соответствующими 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?