Здравствуйте! Схема следующая:
1. На сервере слушает приложение, допустим на адресе 1.1.1.1:10080 2. К серверу подключены 2 линка, по одному из них он доступен как 2.2.2.2 (interface eth0), по другому 3.3.3.3 (interface tun0). 80-е порты внеших адресов 2.2.2.2 и 3.3.3.3 DNAT'ятся на 1.1.1.1:10080 следующим образом: /sbin/iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 --dport 80 -j DNAT --to-destination 1.1.1.1:10080 /sbin/iptables -t nat -A PREROUTING -p tcp -d 3.3.3.3 --dport 80 -j DNAT --to-destination 1.1.1.1:10080 3. Есть следующие правила iproute2: 0: from all lookup local 32765: from 3.3.3.3 lookup tun0_net 32766: from all lookup main 32767: from all lookup default Ну и ip route list table tun0_net: default dev tun0 scope link То есть, пакеты приходящие на dst-ip 3.3.3.3 (без DNAT'а) получают ответ от сервера в интерфейс tun0. Все остальное - по дефолту в eth0. Но когда в дело включается DNAT - начинаются проблемы. Насколько я понимаю, routing decision происходит _до_ DNAT'а. Соотственно, пакеты от 1.1.1.1:10080 раутятся в eth0 в любом случае. DNAT потом переписывает src-ip на 3.3.3.3, если пакет пришел через tun0, но поезд ушел, маршрут уже определен. Получается некрасивая ассиметрия. Какие есть пути решения этой проблемы? Я нашел ROUTE target в iptables, по идее это можно использовать, но, насколько я понимаю, для этого нужны патчи. А хотелось бы обойтись стандартными механизмами. Или ROUTE на уровне iptables единственный вариант? -- WBR, Alexander Burnos -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]