Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > iptables, forwarding


Автор: polosatij 18.12.2009, 15:10

если набрать эти два правила на kubuntu 9.10 в консоли, то всё работает:

   iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
   iptables -t nat -A PREROUTING -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080

мм..  не подскажите, как "прописать" эти данные "на вечно"?

те же правила не работают под opensuse 11.1. если кто, чего подскажет, был бы очень признателен. никогда не настраивал firewall из консоли под линукс.

Big THX smile

Автор: MAKCim 18.12.2009, 15:14
Цитата(polosatij @  18.12.2009,  15:10 Найти цитируемый пост)
мм..  не подскажите, как "прописать" эти данные "на вечно"?

в каком смысле?
после перезагрузки в любом случае дергать iptables нужно будет снова (автоматически или вручную)


Цитата(polosatij @  18.12.2009,  15:10 Найти цитируемый пост)
те же правила не работают под opensuse 11.1

в чем это проявляется?
команды выполняются без ошибки?

Автор: djamshud 18.12.2009, 15:17
>мм..  не подскажите, как "прописать" эти данные "на вечно"?

Сделать скрипт, который будет запусткаться инитом при загрузке. Еще можно воспользоваться надстройкой над iptables - shorewall, которая делает по сути то же.

Автор: polosatij 18.12.2009, 15:17
Цитата(MAKCim @  18.12.2009,  14:14 Найти цитируемый пост)
(автоматически или вручную)


лучше бы автоматически. где можно их прописать?


Цитата(MAKCim @  18.12.2009,  14:14 Найти цитируемый пост)
в чем это проявляется?
команды выполняются без ошибки?


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

Автор: djamshud 18.12.2009, 15:17
Еще конечно же shorewall позволяет менее геморрно рулить фильтрацией и маршрутизацией.

Автор: Сумасшедший 18.12.2009, 15:20
прописываешь в iptables нужные правила, потом:
iptables-save > /etc/iptables.rules
и в /etc/network/interfaces прописываешь:
pre-up iptables-restore /etc/iptables.rules

Добавлено через 1 минуту и 28 секунд
Про opensuse - сравни сначала результат
iptables --list
на обоих ОС

Автор: polosatij 18.12.2009, 15:40
Цитата(Сумасшедший @  18.12.2009,  14:20 Найти цитируемый пост)
прописываешь в iptables нужные правила, потом:
iptables-save > /etc/iptables.rules
и в /etc/network/interfaces прописываешь:
pre-up iptables-restore /etc/iptables.rules


уря! это заработало smile

такой вопрос. у меня написано localhost. может это значит приходящий трафик с той же машины? мне нужно сделать так, чтоб я с др. машины мог бы обратиться на порт 80, а она уже перенаправит трафик на 8080.


Цитата(Сумасшедший @  18.12.2009,  14:20 Найти цитируемый пост)
Про opensuse - сравни сначала результат
iptables --list
на обоих ОС


странно.. nat-овских правил, я почему-то не вижу на OpenSuse..

Добавлено через 7 минут и 9 секунд

если посмотреть в правила, там написано:

# Generated by iptables-save v1.4.2-rc1 on Fri Dec 18 13:45:20 2009
*nat
:PREROUTING ACCEPT [9273:591493]
:POSTROUTING ACCEPT [11637:779160]
:OUTPUT ACCEPT [11637:779160]
-A PREROUTING -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT

то есть, насколько я понимаю, форвард идёт именно для localhost, или я ошибаюсь? если нет, как прописать "для всех"?

Автор: polosatij 25.12.2009, 17:00
никто не подскажет, почему на OpenSuse нет перенаправления с 80 на 8080 порт?

Код

# Generated by iptables-save v1.4.2-rc1 on Fri Dec 25 14:56:39 2009
*nat
:PREROUTING ACCEPT [11496:643947]
:POSTROUTING ACCEPT [4073:247482]
:OUTPUT ACCEPT [4073:247482]
-A PREROUTING -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
# Completed on Fri Dec 25 14:56:39 2009
# Generated by iptables-save v1.4.2-rc1 on Fri Dec 25 14:56:39 2009
*mangle
:PREROUTING ACCEPT [914634:2497177886]
:INPUT ACCEPT [914634:2497177886]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [927950:2513192448]
:POSTROUTING ACCEPT [927950:2513192448]
COMMIT
# Completed on Fri Dec 25 14:56:39 2009
# Generated by iptables-save v1.4.2-rc1 on Fri Dec 25 14:56:39 2009
*raw
:PREROUTING ACCEPT [938294:2508338974]
:OUTPUT ACCEPT [951875:2521611731]
-A PREROUTING -i lo -j NOTRACK
-A OUTPUT -o lo -j NOTRACK
COMMIT
# Completed on Fri Dec 25 14:56:39 2009
# Generated by iptables-save v1.4.2-rc1 on Fri Dec 25 14:56:39 2009
*filter
:INPUT ACCEPT [911930:2496001382]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [927259:2512823307]
:allips - [0:0]
COMMIT
# Completed on Fri Dec 25 14:56:39 2009

Автор: ZeeLax 26.12.2009, 09:43
Код

iptables -t nat -L -n -v

Автор: polosatij 26.12.2009, 14:54
Код

linux-bvdq:~ # iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 15950 packets, 910K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            127.0.0.1           tcp dpt:80 redir ports 8080

Chain POSTROUTING (policy ACCEPT 10378 packets, 650K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 10378 packets, 650K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            127.0.0.1           tcp dpt:80 redir ports 8080



M
ZeeLax
Юзаем кнопку "Код"

Автор: ZeeLax 26.12.2009, 15:01
Форвардинг включен?

Автор: polosatij 26.12.2009, 15:08
Цитата(ZeeLax @  26.12.2009,  14:01 Найти цитируемый пост)
Форвардинг включен?


ты про этот?

cat /proc/sys/net/ipv4/ip_forward

нет. он отключён.

но на кубунту тоже отключён и форвардинг работает.

Автор: ZeeLax 26.12.2009, 15:10
стоп... а как проверяешь?

Автор: polosatij 26.12.2009, 15:43
yast >> firewall - тоже не реагирует и не переписывает правила. странно. трабла случилась после востановления системы из имиджа сделанного программой clonezilla.

Добавлено через 1 минуту и 8 секунд
Цитата(ZeeLax @  26.12.2009,  14:10 Найти цитируемый пост)
стоп... а как проверяешь? 


telnet 127.0.0.1 80

Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused


telnet 127.0.0.1 8080

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Автор: polosatij 26.12.2009, 16:20

мне кажется, мне нужно перестартовать firewall.
на этой странице описано как это сделать:

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables

но это не для OpenSuse. я почему-то не могу найти ничего в нете, кроме yast >> firewall (который, как мне кажется, у меня не работает)

Автор: ZeeLax 26.12.2009, 20:39
Цитата(polosatij @  26.12.2009,  19:20 Найти цитируемый пост)
мне кажется, мне нужно перестартовать firewall.

Нет в линуксе такого понятия. А рестар скрипта, отвечающего за управление правилами иптаблеса, просто удаляет все правила, и вносит их обратно, что, в вашем случае, не даст никакого эффекта.

Автор: polosatij 27.12.2009, 19:53
Цитата(ZeeLax @  26.12.2009,  19:39 Найти цитируемый пост)
Нет в линуксе такого понятия. А рестар скрипта, отвечающего за управление правилами иптаблеса, просто удаляет все правила, и вносит их обратно, что, в вашем случае, не даст никакого эффекта.


ты хочешь сказать: iptables-restore < iptables.rule достаточно, чтоб заставить firewall применять правила? smile

Автор: ZeeLax 27.12.2009, 22:55
Да.

Автор: polosatij 28.12.2009, 06:23

проблема разрешилась после:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

Автор: ZeeLax 28.12.2009, 06:33
Значит, вы нас обманывали. И ходите не с самого хоста и не на 127.0.0.1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)