Здравствуйте! Решил поднять 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 сервер на лок. компе и вот заткнулся на
>редиректе. Я в 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 сервер на лок. компе и вот заткнулся на
>>редиректе. Я в 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 сделал.
-a prerouting -t nat
и -m tcp не нужно
>-a prerouting -t nat
>и -m tcp не нужноЯ может и не спец, но моя СюЗя упорно требует -m tcp Без него не работает.
И ОЧЕНЬ прошу напиши мне строку полностью как должна быть в файле. А то мозги уже набикрень лезут. Я и так и сяк а оно не -a prerouting -t nat - так не работает
>>-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 можно не указывать
Все работает.
>>>-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 не закрывал
forward еще...
А запрос даешь изнутри или снаружи локалки?
Потому как редко какое ядро собрано с full nat for local connection.
Проверяй снаружи
# 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
># masquerade traffic from LAN
>iptables -t nat -A POSTROUTING -s $LAN_NT/$LAN_NM -o $WAN_IF -j MASQUERADE
А это зачем? ответ должен уйти по established, related
>># 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
Может тут вся проблемма. Хотя порт открыт.
Смотри другие правила - что-то у тебя перенаправляет куда-то... не туда
>Смотри другие правила - что-то у тебя перенаправляет куда-то... не туда
Сранно, но у меня тока прозрачный прокси (80) и Осел (4666) и все
Я уже писал - проверяй _снаружи_!
sysctl -w net.ipv4.conf.default.forwarding=1
>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Вот.......
>>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
>>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.htmlPS: у меня именно дэбиан, и именно так сделал. В моем варианте усохло до
#/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 его единожды при первом запросе - так что тут внимательно.