Macro Posted September 6, 2012 Линь обычный, iptables. 2 сетевые (eth0, eth1), 2 ип (х.х.х.х, у.у.у.у). Есть апач который слушает 80 порт на eth1. Надо, сделать локальный редирект между двумя сетевыми. Т.е. трафик приходящий на eth0 на 80 порт, отправлять на eth1 и обратно. iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80-j DNAT --to у.у.у.у:80 - не работает. Запрещающих правил нет, иптаблс пуст. форвард включен: net.ipv4.ip_forward = 1 тспдамп молчит: tcpdump -i eth1 port 80 Если в правиле назначить ип не принадлежащий серверу, я.я.я.я - то по тспдампу видно что пакеты редиректятся. А вот локальный редирект не срабатывает. Апач на eth0 повесить тоже - не предлагать в силу определенных причин. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted September 6, 2012 То что вы пытаетесь сделать с иптаблес абсолютно эквивалентно тому что вы просто повесите апач на этот интерфейс. ip_forward - означает маршрутизацию пакетов НЕ предназначенных серверу, к тому же иптаблесу на это плевать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
agr Posted September 6, 2012 iptables у вас правильно настроен, но tcpdump не отобразит этот трафик. Несмотря на то, что редирект стоит на адрес интерфейса eth1, этот адрес интерфейсу не принадлежит. После прохождения цепочки PREROUTING будет принято решение о маршрутизации, в результате которого пакет должен быть либо отправлен дальше по сети, либо остаться на роутере. В вашем случае он останется на роутере и на сетевой интерфейс никак не попадет. Непосредственно прописанные на интерфейсах адреса хранятся в специальной таблице local, посмотрите ip route get y.y.y.y увидите через какой интерфейс к этому ip должен идти трафик. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
-Ars- Posted September 6, 2012 Несмотря на то, что редирект стоит на адрес интерфейса eth1, этот адрес интерфейсу не принадлежит. Т.е. нюхать либо на eth0, либо на any, чтобы смотреть, что происходит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
agr Posted September 6, 2012 Т.е. нюхать либо на eth0, либо на any, чтобы смотреть, что происходит. Не совсем так, этот пакет после DNAT уже невозможно будет отловить через libpcap(и в частности tcpdump). Чтобы проверить, что редирект происходит, можно сделать правило iptables iptables -A INPUT -i eth0 -p tcp --dport 80 -j LOG и смотреть в логах. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...