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, что бы обращаясь к веб серверу изнутри сети по внешнему адресу, достучаться до него?
Сражу скажу что я не являюсь системным администратором, и все что я делаю исключительно из любопытства и ради саморазвития, поэтому многие вещи я не знаю, а некоторые знаю но не понимаю :)
В общем имеем:
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, что бы обращаясь к веб серверу изнутри сети по внешнему адресу, достучаться до него?