Macro Posted September 6, 2012 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
Ivan_83 Posted September 6, 2012 Posted September 6, 2012 То что вы пытаетесь сделать с иптаблес абсолютно эквивалентно тому что вы просто повесите апач на этот интерфейс. ip_forward - означает маршрутизацию пакетов НЕ предназначенных серверу, к тому же иптаблесу на это плевать. Вставить ник Quote
agr Posted September 6, 2012 Posted September 6, 2012 iptables у вас правильно настроен, но tcpdump не отобразит этот трафик. Несмотря на то, что редирект стоит на адрес интерфейса eth1, этот адрес интерфейсу не принадлежит. После прохождения цепочки PREROUTING будет принято решение о маршрутизации, в результате которого пакет должен быть либо отправлен дальше по сети, либо остаться на роутере. В вашем случае он останется на роутере и на сетевой интерфейс никак не попадет. Непосредственно прописанные на интерфейсах адреса хранятся в специальной таблице local, посмотрите ip route get y.y.y.y увидите через какой интерфейс к этому ip должен идти трафик. Вставить ник Quote
-Ars- Posted September 6, 2012 Posted September 6, 2012 Несмотря на то, что редирект стоит на адрес интерфейса eth1, этот адрес интерфейсу не принадлежит. Т.е. нюхать либо на eth0, либо на any, чтобы смотреть, что происходит. Вставить ник Quote
agr Posted September 6, 2012 Posted September 6, 2012 Т.е. нюхать либо на eth0, либо на any, чтобы смотреть, что происходит. Не совсем так, этот пакет после DNAT уже невозможно будет отловить через libpcap(и в частности tcpdump). Чтобы проверить, что редирект происходит, можно сделать правило iptables iptables -A INPUT -i eth0 -p tcp --dport 80 -j LOG и смотреть в логах. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.