Войти

Показать полную графическую версию : IPFW NAT проброс порта на Web server


AbS
22-10-2010, 00:03
Добрый вечер.

Сражу скажу что я не являюсь системным администратором, и все что я делаю исключительно из любопытства и ради саморазвития, поэтому многие вещи я не знаю, а некоторые знаю но не понимаю :)

В общем имеем:
1. Компьютер с FreeBSD (9.0) служащий как роутер. ipfw + nat. (Версия 9.0 получилась как то случайно :) перед сборкой ядра, для нужд ipfw, обновил исходники и в итоге получилась версия 9.0)
2. Компьютер с FreeBSD (8.1), в общем он является веб сервером, и вопросов к его работе нет.
3. Несколько компов под Виндой, для повседневного использования.

Все это добро соединено в сеть, соответственно роутер торчит между мной и провайдером, все остальное соединено в сеть через хаб.

Теперь перейду к проблеме.
Вкратце звучит так: "Не получается пробросить 80 порт на веб сервер".
Теперь к технической информации:

Ядро собрано с опциями:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"


/etc/rc.conf:

# LAN
ifconfig_rl0="192.168.0.254"
# WAN
ifconfig_fxp0="DHCP ether 0x-1x-6x-3x-0x-bx"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/usr/local/etc/rc.firewall"


/etc/sysctl.conf:
net.inet.ip.fw.one_pass=1

/usr/local/etc/rc.firewall:
#!/bin/sh
fwcmd="ipfw -q"
wan="fxp0"
lan="rl0"
lann="192.168.0.0/24" # LAN network
mina="192.168.0.10" # WEB server
big="192.168.0.101" # station1

setup_loopback () {
${fwcmd} add 002 pass all from any to any via lo0
${fwcmd} add 003 deny all from any to 127.0.0.0/8
${fwcmd} add 004 deny ip from 127.0.0.0/8 to any
}

${fwcmd} -f flush

setup_loopback

${fwcmd} add 100 allow all from any to any via ${lan}

${fwcmd} nat 1 config if ${wan} deny_in same_ports redirect_port tcp ${mina}:80 80 redirect_port tcp ${big}:33028 33028
${fwcmd} add 1000 nat 1 ip from any to any via ${wan}

${fwcmd} add 60000 deny log all from any to any

redirect_port tcp ${big}:33028 33028 это проброс порта дя mTorrenta на стационарную машину.

При таком конфиге, торрент качает нормально, а вот извне зайти на веб сервер не получается ><

Вся загвоздка заключается в том что, проброс порта для mTorrent`a работает, а для Web Server`a нет.
Скажите, может я все таки что то не так делаю?
Почему же для торрента порт пробрасывается а для Веб сервера нет ><

UP
После использования tcpdumpи просмотра, что там почем выяснилась такая картина:


94.19.64.217 - мой ип.

пишем:
tcpdump -i fxp0 tcp port 80

И в браузере набираем http://94.19.64.217
Смотрим в консоль.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on fxp0, link-type EN10MB (Ethernet), capture size 96 bytes


Это наталкивает на мысль что запрос изнутри сети даже не дошёл до внешнего интерфейса fxp0.

Пробуем посмотреть внутренний интерфейс:
tcpdump -i rl0 tcp port 80

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl0, link-type EN10MB (Ethernet), capture size 96 bytes
01:08:10.943750 IP 192.168.0.101.4865 > 94.19.64.217.pool.sknt.ru.http: Flags [S], seq 1938192761, win 65535, options [mss 1460,nop,nop,sackOK], length 0
01:08:10.943804 IP 94.19.64.217.pool.sknt.ru.http > 192.168.0.101.4865: Flags [R.], seq 0, ack 1938192762, win 0, length 0
01:08:11.381866 IP 192.168.0.101.4865 > 94.19.64.217.pool.sknt.ru.http: Flags [S], seq 1938192761, win 65535, options [mss 1460,nop,nop,sackOK], length 0
01:08:11.381915 IP 94.19.64.217.pool.sknt.ru.http > 192.168.0.101.4865: Flags [R.], seq 0, ack 1, win 0, length 0
01:08:11.884345 IP 192.168.0.101.4865 > 94.19.64.217.pool.sknt.ru.http: Flags [S], seq 1938192761, win 65535, options [mss 1460,nop,nop,sackOK], length 0
01:08:11.884391 IP 94.19.64.217.pool.sknt.ru.http > 192.168.0.101.4865: Flags [R.], seq 0, ack 1, win 0, length 0


И тут видем, что пакет гуляет внутри сети, причем крутиться всегда на внутреннем интерфейсе.

Поэтому вопрос более конкретный.
Как правильно настроить ipfw nat, что бы обращаясь к веб серверу изнутри сети по внешнему адресу, достучаться до него?

Negativ
22-10-2010, 11:52
Тут почитайте -> http://forum.oszone.net/thread-184861.html

AbS
22-10-2010, 19:55
http://img214.imageshack.us/img214/8073/netx.jpg
Вот даже картинку нарисовал.
то что красным нужно сделать что бы работало ><

Flainth
04-11-2010, 09:15
AbS у Вас провайдер не "4-м" случайно?

AbS
04-11-2010, 13:36
Нет. Это даже в тспдампе написанно.

Тему можно закрывать. В такой ситуации лучше использовать ДНС.




© OSzone.net 2001-2012