digital422
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть 2 физических интернет соединения: eth1.1 (1.1.1.2) и eth1.2 (2.2.2.3), шлюз по умолчанию прописан на eth1.1 -1.1.1.1. Для подключения к eth1.2 промаркировано правило в iptables и созданы rule и table: Код: $IPTABLES -t mangle -A OUTPUT -s 2.2.2.3 -o eth1.1 -p icmp -j MARK --set-mark 2 $IPTABLES -t mangle -A OUTPUT -s 2.2.2.3 -o eth1.1 -p tcp -j MARK --set-mark 2 $IPTABLES -t mangle -A OUTPUT -s 2.2.2.3 -o eth1.1 -p ucp -j MARK --set-mark 2 $IPTABLES -t mangle -A OUTPUT -s 2.2.2.3 -d 4.4.4.4 -o eth1.1 -p icmp -j MARK --set-mark 2 ip rule add fwmark 0x2/0x2 lookup 102 ip route add via 2.2.2.2 dev eth1.2 table 102 | Если отправить с любого удаленного хоста ping на 2.2.2.3 он приходит на eth1.2 и возвращается с этого же интерфейса, тоже самое с протоколом tcp. Проблема: устанавливаем входящее соединение по udp, пакет приходит на 2.2.2.3, но возвращается на отправляемый сервер с адресом 1.1.1.2. Тоже самое если отправить локально ping на 4.4.4.4, он должен уйти через eth1.2 и придти на адрес 4.4.4.4 с адреса 2.2.2.3, но приходит с адреса 1.1.1.2. Проблемы нет если установить маршрут вручную: ip route add 4.4.4.4 via 2.2.2.2. В этом случае на 4.4.4.4 приходит ping с 2.2.2.3. Что не хватает в данной схеме ? Протокол Udp нельзя маршрутизировать с помощью связки iproute2+iptables? |