Cramac Posted July 6, 2014 Posted July 6, 2014 Всем привет. Есть # uname -aLinux 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 8001tcp 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 -vChain 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 Вставить ник Quote
NiTr0 Posted July 6, 2014 Posted July 6, 2014 -j SNAT используйте. //сорри, DNAT ессно. Вставить ник Quote
Cramac Posted July 6, 2014 Author Posted July 6, 2014 Если использовать SNAT не возникнет ли проблем с кэшем? Вставить ник Quote
Cramac Posted July 6, 2014 Author Posted July 6, 2014 попробовал так iptables -t nat -A PREROUTING -p tcp -s 172.20.0.2 -j DNAT --to-destination 10.10.10.2:80 не сработало... Вставить ник Quote
Cramac Posted July 6, 2014 Author Posted July 6, 2014 попробовал изначальное правило на другом сервере, сработало на ура...но тут ОС убунта Вставить ник Quote
Antares Posted July 6, 2014 Posted July 6, 2014 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 выключен?? Вставить ник Quote
Cramac Posted July 6, 2014 Author Posted July 6, 2014 # 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 (если редиректить на удаленный) Вставить ник Quote
NiTr0 Posted July 6, 2014 Posted July 6, 2014 попробовал так 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. Вставить ник Quote
taf_321 Posted July 7, 2014 Posted July 7, 2014 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 Вставить ник Quote
Abram Posted July 7, 2014 Posted July 7, 2014 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 Один хрен так бы тоже сработало. Вставить ник Quote
pppoetest Posted July 7, 2014 Posted July 7, 2014 Угу, в особенности если туда попадает траф до днс. Вставить ник Quote
Abram Posted July 7, 2014 Posted July 7, 2014 Угу, в особенности если туда попадает траф до днс. Вообще - правильное замечание. Но я оттуда дампы видел - DNS там как-то по-другому идет, HTTP запросы проскакивают. Да и в iptables счетчик редиректов крутится; но не работает. Вставить ник Quote
zhenya` Posted July 7, 2014 Posted July 7, 2014 ну дык.. а ответ от того серверва поди напрямую приходит? там же ип левый будет.. Вставить ник Quote
Abram Posted July 8, 2014 Posted July 8, 2014 ну дык.. а ответ от того серверва поди напрямую приходит? там же ип левый будет.. Поэтому, собственно, человеку и нужен был -j REDIRECT, который, как известно, на 127.0.0.1. Вставить ник Quote
Cramac Posted July 19, 2014 Author Posted July 19, 2014 Всем привет. Подскажите, починили редирект, все работает отлично, редирект сделан для таблицы в ipset Но встала другая задача, как сделать что бы редирект срабатывал на все кроме определенного ИП? т.е. хочу сделать свободный доступ к ЛК (находится в интернете, home.site.ru) а на все остальное редиректить через nginx. Или в том же nginx можно описать данную ситуацию? Вставить ник Quote
Abram Posted July 19, 2014 Posted July 19, 2014 -j ACCEPT перед правилом с редиректом. Вставить ник Quote
h1vs2 Posted July 20, 2014 Posted July 20, 2014 Я так понимаю Вам для асселя. Когда делал халтуру, сделал так : -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 не гуру, но все работает как надо - так и оставил. Вставить ник 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.