URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 65346
[ Назад ]

Исходное сообщение
"Не получается пробросить www из мира на локальную машинку"

Отправлено mplane , 03-Апр-06 16:09 
Здравствуйте! Решил поднять www сервер на лок. компе и вот заткнулся на редиректе. Я в IPTables прописал вот что
-A PREROUTING -p tcp -d $EXT_R_IP --dport 8080 -j DNAT --to-destination 192.0.0.3:8080
-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT
а оно не перебрасывает. Что я криво сделал?

Содержание

Сообщения в этом обсуждении
"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 03-Апр-06 17:00 
>Здравствуйте! Решил поднять www сервер на лок. компе и вот заткнулся на
>редиректе. Я в IPTables прописал вот что
>-A PREROUTING -p tcp -d $EXT_R_IP --dport 8080 -j DNAT --to-destination 192.0.0.3:8080
добавить -t nat
>-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT
>
>а оно не перебрасывает. Что я криво сделал?
а оно точно с eth0 ?

"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 03-Апр-06 17:11 
>>Здравствуйте! Решил поднять www сервер на лок. компе и вот заткнулся на
>>редиректе. Я в IPTables прописал вот что
>>-A PREROUTING -p tcp -d $EXT_R_IP --dport 8080 -j DNAT --to-destination 192.0.0.3:8080
>добавить -t nat
>>-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT
>>
>>а оно не перебрасывает. Что я криво сделал?
>а оно точно с eth0 ?


Да. То что я написал это уже в файле iptables у меня так осел настроин а вот веб не хотить
-A PREROUTING -d $EXT_R_IP -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.0.0.3:8080
-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT

Только для www сделал.


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 03-Апр-06 17:59 
-a prerouting -t nat
и -m tcp не нужно

"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 03-Апр-06 18:11 
>-a prerouting -t nat
>и -m tcp не нужно

Я может и не спец, но моя СюЗя упорно требует -m tcp Без него не работает.
И ОЧЕНЬ прошу напиши мне строку полностью как должна быть в файле. А то мозги уже набикрень лезут. Я и так и сяк а оно не -a prerouting -t nat  - так не работает


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 03-Апр-06 18:37 
>>-a prerouting -t nat
>>и -m tcp не нужно
>
>Я может и не спец, но моя СюЗя упорно требует -m tcp
>Без него не работает.
>И ОЧЕНЬ прошу напиши мне строку полностью как должна быть в файле.
>А то мозги уже набикрень лезут. Я и так и сяк
>а оно не -a prerouting -t nat  - так не
>работает

iptables -A PREROUTING -t nat --protocol tcp --destination $EXT_IPADDR --destination-port $WWW_PORT -j DNAT --to-destination $INTERNAL_WWW:$INTERNAL_WWW_PORT

Если порты снаружи и внутри совпадают, то :$INTERNAL_WWW_PORT можно не указывать
Все работает.


"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 03-Апр-06 18:53 
>>>-a prerouting -t nat
>>>и -m tcp не нужно
>>
>>Я может и не спец, но моя СюЗя упорно требует -m tcp
>>Без него не работает.
>>И ОЧЕНЬ прошу напиши мне строку полностью как должна быть в файле.
>>А то мозги уже набикрень лезут. Я и так и сяк
>>а оно не -a prerouting -t nat  - так не
>>работает
>
>iptables -A PREROUTING -t nat --protocol tcp --destination $EXT_IPADDR --destination-port $WWW_PORT -j
>DNAT --to-destination $INTERNAL_WWW:$INTERNAL_WWW_PORT
>
>Если порты снаружи и внутри совпадают, то :$INTERNAL_WWW_PORT можно не указывать
>Все работает.

Я так сделал но.... Результата нет. Может что ещё?А? пишу http://xxx.xxx.xxx.xxx:8080 не перебрасывает.В iptables порт 8080 не закрывал


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 03-Апр-06 18:59 
forward еще...
А запрос даешь изнутри или снаружи локалки?
Потому как редко какое ядро собрано с full nat for local connection.
Проверяй снаружи

"Не получается пробросить www из мира на локальную машинку"
Отправлено anonymous , 03-Апр-06 22:05 
# redirect incoming tcp/8080 to 192.0.0.3
iptables -t nat -A PREROUTING -d $WAN_IP -p tcp --dport 8080 -j DNAT --to-destination 192.0.0.3

# allow tcp/8080 to 192.0.0.3
iptables -I FORWARD -i $WAN_IF -o $LAN_IF -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT

# masquerade traffic from LAN
iptables -t nat -A POSTROUTING -s $LAN_NT/$LAN_NM -o $WAN_IF -j MASQUERADE


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 04-Апр-06 11:25 
># masquerade traffic from LAN
>iptables -t nat -A POSTROUTING -s $LAN_NT/$LAN_NM -o $WAN_IF -j MASQUERADE
А это зачем? ответ должен уйти по established, related


"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 04-Апр-06 12:52 
>># masquerade traffic from LAN
>>iptables -t nat -A POSTROUTING -s $LAN_NT/$LAN_NM -o $WAN_IF -j MASQUERADE
>А это зачем? ответ должен уйти по established, related

Спасибо у меня все заработало но если это порт 80 а 8080 не работает. Я зашел на сервер с ресурсом набрал nmap localhost
8080/tcp open  http-proxy
Может тут вся проблемма. Хотя порт открыт.


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 04-Апр-06 13:07 
Смотри другие правила - что-то у тебя перенаправляет куда-то... не туда

"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 04-Апр-06 13:21 
>Смотри другие правила - что-то у тебя перенаправляет куда-то... не туда


Сранно, но у меня тока прозрачный прокси (80) и Осел (4666) и все


"Не получается пробросить www из мира на локальную машинку"
Отправлено _KAV_ , 04-Апр-06 15:27 
Я уже писал - проверяй _снаружи_!

"Не получается пробросить www из мира на локальную машинку"
Отправлено vvvua , 06-Апр-06 15:51 
sysctl -w net.ipv4.conf.default.forwarding=1


"Не получается пробросить www из мира на локальную машинку"
Отправлено mplane , 06-Апр-06 18:03 
>sysctl -w net.ipv4.conf.default.forwarding=1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
не надо.
Спасибо все работает.
-A PREROUTING -d $EXT_R_IP -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.0.0.3:8080
-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT

Вот.......


"Не получается пробросить www из мира на локальную машинку"
Отправлено Андрей , 06-Апр-06 18:40 
>>sysctl -w net.ipv4.conf.default.forwarding=1
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>не надо.
>Спасибо все работает.
>-A PREROUTING -d $EXT_R_IP -p tcp -m tcp --dport 8080 -j DNAT
>--to-destination 192.0.0.3:8080
>-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT
>
>
>Вот.......

ip странные какие то :
192.0.0.3


"Не получается пробросить www из мира на локальную машинку"
Отправлено DM , 07-Апр-06 05:53 
>>sysctl -w net.ipv4.conf.default.forwarding=1
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>не надо.
>Спасибо все работает.
>-A PREROUTING -d $EXT_R_IP -p tcp -m tcp --dport 8080 -j DNAT
>--to-destination 192.0.0.3:8080
>-A FORWARD -i eth0 -d 192.0.0.3 -p tcp --dport 8080 -j ACCEPT
>
>
>Вот.......
Попробуй изнутри сходить, а потом попробуй снаружи. И в конце попробуй с машинки с этим самым iptables'ом зайти.
Сам перечитал доку тут
http://www.opennet.me/docs/RUS/iptables/#DNATTARGET
но у меня эффект был полностью обратный - из локалки ходило, а из мира соединение вроде шло, но бразуеру ничего не отдавалось.
Нашел в списках рассылки такую штукень
http://lists.debian.org/debian-russian/2003/03/msg00896.html

PS: у меня именно дэбиан, и именно так сделал. В моем варианте усохло до
#/etc/xinetd.conf
service test_serv
{
    socket_type = stream
    wait = no
    user = root
    redirect = 192.168.0.20 8090
}
#/etc/services
test_serv       8090/tcp        #test server's apache

Заработало сразу и из мира, и из локлки, и с самого роутера. А с iptables так и не завел.

PS2: вместо 192.168.0.20 можно написать имя машинки. Если оно резолвится, ессно (у меня в hosts прописан как beast, и строка redirect = beast 8090). Резолвит xinetd его единожды при первом запросе - так что тут внимательно.