Подскажите пожалуйста какими правилами в rc.ipfw открыть доступ извне к локальной машине внутри с адресом 192.168.0.x по определенному порту при включеном NAT. Мое предположение: при помощи fwd, но как именно?
>Подскажите пожалуйста какими правилами в rc.ipfw открыть доступ извне к локальной машине
>внутри с адресом 192.168.0.x по определенному порту при включеном NAT. Мое
>предположение: при помощи fwd, но как именно?Это делается с помощью опции redirect_port демона natd
подробнее - читайте ниже
http://www.freebsd.org.ua/doc/ru_RU.KOI8-R/books/handbook/ne...
edwin: я правильно понял:в rc.ipfw я просто окрываю порт
а в файл rc.conf добавляю строку: redirect_port tcp 192.168.0.x:порт порт?
>edwin: я правильно понял:
>
>в rc.ipfw я просто окрываю портРазумеется в firewall'e надо разрешить прохождение пакетов.
>а в файл rc.conf добавляю строку: redirect_port tcp 192.168.0.x:порт портСтоп.
Зачем захламлять rc.conf
есть же /etc/natd.conf
ага, т.е. строку redirect_port tcp 192.168.0.x:порт порт в natd.conf прописать?
>ага, т.е. строку redirect_port tcp 192.168.0.x:порт порт в natd.conf прописать?Угу.
спасибо тебе edwin, не первый раз меня выручаешь...
edwin: выручай....
неполучается пробросить...в rc.conf касательно NAT:
natd_enable="YES"
natd_interface="rl1"
natd_flags="-f /etc/natd.conf"в rc.ipfw:
add allow log tcp from any to xxx.xxx.xxx.xxx out via tun*
add allow log tcp from xxx.xxx.xxx.xxx to any port in via tun*где xxx.xxx.xxx.xxx - адрес с которого нужно иметь доступ внутрь.
port - порт, на котором слушет сервис внутри сети.в natd.conf:
log yes
log_denied yes
use_sockets yes
unregistered_only yes
dynamic tes
redirect_port tcp yyy.yyy.yyy.yyy:port portгде yyy.yyy.yyy.yyy - адрес машины в внутри сети, где сидит сервис и слушает порт port.
при попытке, в логе security есть запись:
Accept TCP xxx.xxx.xxx.xxx:port1 мой_внешний_ИП:port in via tun0НО не коннектится!!! На что еще нужно обратить внимание???
>edwin: выручай....
>неполучается пробросить...
>
>в rc.conf касательно NAT:
>
>natd_enable="YES"
>natd_interface="rl1"
>natd_flags="-f /etc/natd.conf"
>
>в rc.ipfw:
>
>add allow log tcp from any to xxx.xxx.xxx.xxx out via tun*
>add allow log tcp from xxx.xxx.xxx.xxx to any port in via tun*
>
>
>где xxx.xxx.xxx.xxx - адрес с которого нужно иметь доступ внутрь.
> port - порт, на котором слушет сервис внутри
>сети.
>
>в natd.conf:
>
>log yes
>log_denied yes
>use_sockets yes
>unregistered_only yes
>dynamic tes
>redirect_port tcp yyy.yyy.yyy.yyy:port port
>
>где yyy.yyy.yyy.yyy - адрес машины в внутри сети, где сидит сервис и
>слушает порт port.
>
>при попытке, в логе security есть запись:
>Accept TCP xxx.xxx.xxx.xxx:port1 мой_внешний_ИП:port in via tun0
>
>НО не коннектится!!! На что еще нужно обратить внимание???для начала разреши прохождение всех пакетов через firewall
И глянь все ли работает.
Затем последовательно запрщай ... до потимума.
Также тебе поможет tcpdump
и на всякий случай - мое мыло - edwin_|_alkar.net
вот что есть из tcpdump -i tun0:10:03:18.267174 xxx.xxx.xxx.xxx.port1 > мой_внешний_ип.port: S 285965535:285965535(0) win 65535 <mss 1452,nop,nop,sackOK> (DF)
10:03:18.267257 мой_внешний_ип.port > xxx.xxx.xxx.xxx.port1: R 0:0(0) ack 285965536 win 0но о чем это говорит, я к сожалению незнаю, буду читать....
щас попробую с открытым фаером
пробовал с открытым фаером (firewall_type="OPEN"), бесполезно...
еще один ньюанс:
в файле rc.ipfw есть правило:add divert natd all from any to any via ${natd_interface}
т.е. все пакеты направляются демону natd проходящие через интерфейс natd, который в файле natd.conf указан как rl1.
может в качестве интерфейса нужно указывать мой тунель tun0?
>еще один ньюанс:
>в файле rc.ipfw есть правило:
>
>add divert natd all from any to any via ${natd_interface}
>
>т.е. все пакеты направляются демону natd проходящие через интерфейс natd, который в
>файле natd.conf указан как rl1.
>
>может в качестве интерфейса нужно указывать мой тунель tun0?обшибся: не в natd.conf, а в rc.conf....
Ребяты, ну подскажите, куда копать? Как отследить прохождение пакета, где он стопорится?
>Подскажите пожалуйста какими правилами в rc.ipfw открыть доступ извне к локальной машине
>внутри с адресом 192.168.0.x по определенному порту при включеном NAT. Мое
>предположение: при помощи fwd, но как именно?
http://www.opennet.me/tips/info/467.shtml
читать вместе с комментами
alchie: все пересморел по нескольку раз, все перепробовал, ну не хотит и все..... тки пальцем, что нетак?
>alchie: все пересморел по нескольку раз, все перепробовал, ну не хотит и
>все..... тки пальцем, что нетак?Я вернулся.
Чудес не бывает ....
А что выдает команда ?
sysctl net.inet.ip.forwarding
Если 0, то надо сделать:
sysctl -w net.inet.ip.forwarding="1"
И добавить в rc.conf gateway_enable="YES"
команда выдает значение 1
gateway_enable="YES" - прописано
>команда выдает значение 1
>gateway_enable="YES" - прописаноЛадно.
Будем танцевать "от печки".
В студию:
1) текущий rc.conf
2) текущий конфиг firewall
3) текущий конфиг nat
>>команда выдает значение 1
>>gateway_enable="YES" - прописано
>
>Ладно.
>Будем танцевать "от печки".
>В студию:
>1) текущий rc.conf
>2) текущий конфиг firewall
>3) текущий конфиг natКстати, а может стоит Вам рассмотреть возможность использования pf ?
ИМХО, он проще для понимания.А вот и линк на статью:
http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=...
rc.conf:defaultrouter="мой_внешний_ИП"
gateway_enable="YES"
hostname="SHLUZ.ChanceOFFICE"
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="papchap"firewall_enable="YES"
firewall_script="/etc/rc.ipfw"
firewall_loggining="YES"
firewall_quiet="YES"natd_enable="YES"
natd_interface="rl1"
natd_flags="-f /etc/natd.conf"mta_start_script=""
sendmail_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
sendmail_submit_enable="NO"squid_enable="YES"
sshd_enable="YES"
static_routes="net1"
route_net1="-net 192.168.1.0 -netmask 255.255.255.0 192.168.0.2"keymap="ru.koi8-r"
keychange="61 [[K"
scrnmap="koi8-r2cp866"в rc.ipfw
# Stop spoofing
${fwcmd} add deny all from 192.168.0.0/24 to any in via rl1# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from any to 10.0.0.0/8 via rl1
${fwcmd} add deny all from any to 172.16.0.0/12 via rl1# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
${fwcmd} add deny all from any to 0.0.0.0/8 via rl1
${fwcmd} add deny all from any to 169.254.0.0/16 via rl1
${fwcmd} add deny all from any to 224.0.0.0/4 via rl1
${fwcmd} add deny all from any to 240.0.0.0/4 via rl1#squid
${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.0.0/24 to мой_внешний_ИП 80,8080,443 via rl0
${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via rl0
${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.1.0/24 to мой_внешний_ИП 80,8080,443 via rl0
${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 via rl0case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}" ]; then
${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
fi
;;
esac# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from 10.0.0.0/8 to any via rl1
${fwcmd} add deny all from 172.16.0.0/12 to any via rl1
${fwcmd} add deny all from 192.168.0.0/16 to any via rl1# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
${fwcmd} add deny all from 0.0.0.0/8 to any via rl1
${fwcmd} add deny all from 169.254.0.0/16 to any via rl1
${fwcmd} add deny all from 192.168.0.0/24 to any via rl1..........
#RAdmin on 192.168.0.2
${fwcmd} add allow log tcp from any to ИП_адрес_машины_снаружи out via tun*
${fwcmd} add allow log tcp from ИП_адрес_машины_снаружи to any 4899 in via tun*..........
в natd.conflog yes
log_denied yes
use_sockets yes
same_ports yes
unregistered_only yes
dynamic yes
interface rl1
redirect_port tcp 192.168.0.2:4899 4899
1Help 2Save 3Mark 4Replac 5Copy 6Move 7Search 8Delete 9PullDn 10Quit
>rc.conf:
>
>defaultrouter="мой_внешний_ИП"
>gateway_enable="YES"
>hostname="SHLUZ.ChanceOFFICE"
>ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
>
>ppp_enable="YES"
>ppp_mode="ddial"
>ppp_profile="papchap"
>
>firewall_enable="YES"
>firewall_script="/etc/rc.ipfw"
>firewall_loggining="YES"
>firewall_quiet="YES"
>
>natd_enable="YES"
>natd_interface="rl1"
>natd_flags="-f /etc/natd.conf"
>
>mta_start_script=""
>sendmail_enable="NO"
>sendmail_outbound_enable="NO"
>sendmail_msp_queue_enable="NO"
>sendmail_submit_enable="NO"
>
>squid_enable="YES"
>
>sshd_enable="YES"
>
>static_routes="net1"
>route_net1="-net 192.168.1.0 -netmask 255.255.255.0 192.168.0.2"
>
>keymap="ru.koi8-r"
>keychange="61 [[K"
>scrnmap="koi8-r2cp866"
>
>в rc.ipfw
>
># Stop spoofing
>${fwcmd} add deny all from 192.168.0.0/24 to any in via rl1
>
># Stop RFC1918 nets on the outside interface
>${fwcmd} add deny all from any to 10.0.0.0/8 via rl1
>${fwcmd} add deny all from any to 172.16.0.0/12 via rl1
>
># Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
># DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
># on the outside interface
>${fwcmd} add deny all from any to 0.0.0.0/8 via rl1
>${fwcmd} add deny all from any to 169.254.0.0/16 via rl1
>${fwcmd} add deny all from any to 224.0.0.0/4 via rl1
>${fwcmd} add deny all from any to 240.0.0.0/4 via rl1
>
>#squid
>
>${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.0.0/24 to мой_внешний_ИП 80,8080,443 via rl0
>
>${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 via rl0
>
>${fwcmd} add fwd 127.0.0.1,80 tcp from 192.168.1.0/24 to мой_внешний_ИП 80,8080,443 via rl0
>
>${fwcmd} add fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 via rl0
>
>
>case ${natd_enable} in
>[Yy][Ee][Ss])
>if [ -n "${natd_interface}" ]; then
>${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
>
>fi
>;;
>esac
>
># Stop RFC1918 nets on the outside interface
>${fwcmd} add deny all from 10.0.0.0/8 to any via rl1
>${fwcmd} add deny all from 172.16.0.0/12 to any via rl1
>${fwcmd} add deny all from 192.168.0.0/16 to any via rl1
>
># Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
># DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
># on the outside interface
>${fwcmd} add deny all from 0.0.0.0/8 to any via rl1
>${fwcmd} add deny all from 169.254.0.0/16 to any via rl1
>${fwcmd} add deny all from 192.168.0.0/24 to any via rl1
>
>..........
>
>#RAdmin on 192.168.0.2
>${fwcmd} add allow log tcp from any to ИП_адрес_машины_снаружи out via tun*
>
>${fwcmd} add allow log tcp from ИП_адрес_машины_снаружи to any 4899 in via
>tun*
>
>..........
>
>
>в natd.conf
>
>log yes
>log_denied yes
>use_sockets yes
>same_ports yes
>unregistered_only yes
>dynamic yes
>interface rl1
>redirect_port tcp 192.168.0.2:4899 4899
>
>
нат и редирект на физическом интерфейсе, а правило для туннеля. работать не будет естесна
дык если я укажу${fwcmd} add allow log tcp from any to ИП_адрес_машины_снаружи out via rl1
${fwcmd} add allow log tcp from ИП_адрес_машины_снаружи to any 4899 in via rl1то в логе при попытке появляются записи Deny ..... via tun0
>дык если я укажу
>
>${fwcmd} add allow log tcp from any to ИП_адрес_машины_снаружи out via rl1
>
>${fwcmd} add allow log tcp from ИП_адрес_машины_снаружи to any 4899 in via
>rl1
>
>то в логе при попытке появляются записи Deny ..... via tun0и правильно. значит нужно с другой стороны копнуть - натд на tun0 перевесить
alchie: пробовал я в rc.conf прописывать:natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/natd.conf"и в natd.conf:
log yes
log_denied yes
use_sockets yes
same_ports yes
unregistered_only yes
dynamic yes
interface tun0
redirect_port tcp 192.168.0.2:4899 4899Загрузка проходит, в логах соединения (ppp.log) соединение происходит, тунель подымается, но внешний адрес не пингуется, сообщений об ошибках я больше не нашел....
>alchie: пробовал я в rc.conf прописывать:
>
>natd_enable="YES"
>natd_interface="tun0"
>natd_flags="-f /etc/natd.conf"
>
>и в natd.conf:
>log yes
>log_denied yes
>use_sockets yes
>same_ports yes
>unregistered_only yes
>dynamic yes
>interface tun0
>redirect_port tcp 192.168.0.2:4899 4899
>
>Загрузка проходит, в логах соединения (ppp.log) соединение происходит, тунель подымается, но внешний
>адрес не пингуется, сообщений об ошибках я больше не нашел....А он не пингуется из cетки ?
Или и с сервака ?
с самого шлюза не пингуется (т.е. там где интерфейс стоит)и из ЛВС тоже....
>с самого шлюза не пингуется (т.е. там где интерфейс стоит)и из ЛВС
>тоже....А нельзя ли посмотреть в этот момент
netstat -rn
все, проброс совершен. незнаю почему, может глюк или что, но когда в первый раз попытался НАТ на tun повесить, неработало (см. выше), после заметил ошибку: natdnatd: чето типа последняя строка в файле конфигурации должна быть пустой.... поставил, все заработало... буду следить/тестить. огромное спасибо.
и вот сразу встречный вопрос, чем грозит перевес НАТа с одного интерфейса на другой?
>и вот сразу встречный вопрос, чем грозит перевес НАТа с одного интерфейса
>на другой?Ну придется подредактировать правила firewall'а
>Ну придется подредактировать правила firewall'ат.е. везде поменять с rl1 на tun?
>>Ну придется подредактировать правила firewall'а
>
>т.е. везде поменять с rl1 на tun?
Да.
>defaultrouter="мой_внешний_ИП"
Какой смысл назначать шлюзом по умолчанию себя? Все равно что спрашивать как пройти в библиотеку у себя же.(((1)))
>ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
>в rc.ipfw># Stop spoofing
>${fwcmd} add deny all from 192.168.0.0/24 to any in via rl1Стоп, уже непонятно - см. (((1)))
Убиваем все пакеты из локалки, к которой относится и наш внутренний интерфейс?
>>defaultrouter="мой_внешний_ИП"
>Какой смысл назначать шлюзом по умолчанию себя? Все равно что спрашивать как
>пройти в библиотеку у себя же.если речь идет о p-t-p соединениях типа PPTP/PPPoE, то там именно так и делается
>
>(((1)))
>>ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
>
>
>>в rc.ipfw
>
>># Stop spoofing
>>${fwcmd} add deny all from 192.168.0.0/24 to any in via rl1
>
>Стоп, уже непонятно - см. (((1)))
>Убиваем все пакеты из локалки, к которой относится и наш внутренний интерфейс?rl1 != rl0
vizard:"Какой смысл назначать шлюзом по умолчанию себя? Все равно что спрашивать как пройти в библиотеку у себя же. " - я соединяюсь через PPPoE.
"Убиваем все пакеты из локалки, к которой относится и наш внутренний интерфейс?" - через rl1 интерфейс проходят пакеты уже инкапсулированные и неимеющие отношения к внутренней сети.