Jump to content
Калькуляторы

Не работает iptables redirect

Всем привет.

Есть

# uname -a

Linux ipoe 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

iptables v1.4.7

 

# netstat -an | grep 8001

tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN

 

пишу

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j REDIRECT --to-port 8001

 

и на этом ничего не происходит, счетчики набегают в правило, на ПК браузер просто крутит в ожидании...

Что такое и как исправить?

 

в iptables всего два правила НАТа, остальное открыто

# iptables -L -v

Chain INPUT (policy ACCEPT 415K packets, 53M bytes)

pkts bytes target prot opt in out source destination

 

Chain FORWARD (policy ACCEPT 42M packets, 35G bytes)

pkts bytes target prot opt in out source destination

 

Chain OUTPUT (policy ACCEPT 25M packets, 32G bytes)

pkts bytes target prot opt in out source destination

Share this post


Link to post
Share on other sites

-j SNAT используйте.

 

//сорри, DNAT ессно.

Share this post


Link to post
Share on other sites

Если использовать SNAT не возникнет ли проблем с кэшем?

Share this post


Link to post
Share on other sites

попробовал так

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80

 

не сработало...

Share this post


Link to post
Share on other sites

попробовал изначальное правило на другом сервере, сработало на ура...но тут ОС убунта

Share this post


Link to post
Share on other sites

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j REDIRECT --to-port 8001

и

попробовал так

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80

ни чего что порты в правилах разные??

SELinux выключен??

Share this post


Link to post
Share on other sites
# cat /etc/selinux/config

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

то что порты разные это так и должно быть, локальный порт 8001(если редиректить на себя) удаленный 80 (если редиректить на удаленный)

Share this post


Link to post
Share on other sites

попробовал так

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80

 

не сработало...

Странно однако. Попробуйте редирект на другую машину сделать, и послушать tcpdump'ом что там ходит... Альтернатива - в чейн INPUT добавить -j LOG.

Share this post


Link to post
Share on other sites

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80

 

эээ... А разве --dport в правиле указывать сейчас не надо? Пример из рабочего конфига:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.1.2

Share this post


Link to post
Share on other sites

iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80

 

эээ... А разве --dport в правиле указывать сейчас не надо? Пример из рабочего конфига:

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.1.2

Один хрен так бы тоже сработало.

Share this post


Link to post
Share on other sites

Угу, в особенности если туда попадает траф до днс.

Share this post


Link to post
Share on other sites

Угу, в особенности если туда попадает траф до днс.

Вообще - правильное замечание.

Но я оттуда дампы видел - DNS там как-то по-другому идет, HTTP запросы проскакивают. Да и в iptables счетчик редиректов крутится; но не работает.

Share this post


Link to post
Share on other sites

ну дык.. а ответ от того серверва поди напрямую приходит? там же ип левый будет..

Share this post


Link to post
Share on other sites

ну дык.. а ответ от того серверва поди напрямую приходит? там же ип левый будет..

Поэтому, собственно, человеку и нужен был -j REDIRECT, который, как известно, на 127.0.0.1.

Share this post


Link to post
Share on other sites

Всем привет. Подскажите, починили редирект, все работает отлично, редирект сделан для таблицы в ipset

Но встала другая задача, как сделать что бы редирект срабатывал на все кроме определенного ИП?

т.е. хочу сделать свободный доступ к ЛК (находится в интернете, home.site.ru) а на все остальное редиректить через nginx.

Или в том же nginx можно описать данную ситуацию?

Share this post


Link to post
Share on other sites

Я так понимаю Вам для асселя.

 

Когда делал халтуру, сделал так :

 

-A FORWARD -m set --match-set guest-ipoe src -m set --match-set guest-ipoe-allow dst -j ACCEPT
-A FORWARD -m set --match-set guest-ipoe src -j DROP


-A PREROUTING -p tcp -m set --match-set guest-ipoe src -m set ! --match-set guest-ipoe-allow dst -m tcp --dport 80 -j REDIRECT --to-ports 1123

 

guest-ipoe - сюда попадают IP абонов, которых надо завернуть.

guest-ipoe-allow - IP ресурсов на которые можно ходить мимо заглушки.

 

В iptables не гуру, но все работает как надо - так и оставил.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this