Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - Проброс портов Freebsd 9, mpd, pf

Ответить
Настройки темы
FreeBSD - Проброс портов Freebsd 9, mpd, pf

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ситуация такая:
Провайдер билайн, в качестве впн клиента (L2TP) использую mpd, собственно его же использую и в качестве ната на внешний интерфейс, а проброс портов возложил на pf.
Проблема 1: (по сути не столь критичная, но если кто сталкивался, был бы не прочь услышать мнение): при использовании pf в качестве ната на внешний интерфейс (который создает mpd) постоянно дисконнектит инет, чуть ли не каждые 5 минут (хотя при использовании mpd всё работает и натится отлично).

Проблема 2: Не работает проброс портов, который осуществляется pf, хотя если посмотреть в лог пакет фильтра, проброс происходит, но на тачку на которую осуществляется проброс ничего не приходит.

На данный момент uname:
$ uname -a
FreeBSD serv 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #0: Sun Sep 23 16:02:34 NOVT 2012 adm@serv:/usr/obj/usr/src/sys/mykern120923 amd64

Те же проблемы испытывал и на stable ветке 9.0

rc.conf
Код: Выделить весь код
keymap="ru.koi8-r.win.kbd"
dumpdev="AUTO"

synchronous_dhclient="YES"
defaultrouter="10.59.0.1"
ifconfig_em1="DHCP"
ifconfig_em0="inet 192.168.1.1 netmask 255.255.0.0"
hostname="serv"

pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pfsync_enable="NO"              # Expose pf state to other hosts for syncing
pfsync_syncdev=""               # Interface for pfsync to work through
pfsync_syncpeer=""              # IP address of pfsync peer host
pfsync_ifconfig=""
ftpproxy_enable="YES"
ftpproxy_flags="-D 0"
mpd_enable="YES"
mpd_flags="-b"

sshd_enable="YES"
apache22_enable="YES"
mysql_enable="YES"
mysql_limits="NO"
mysql_dbdir="/var/db/mysql"
mysql_args="--log"

linux_enable="YES"
accounting_enable="YES"
pf.conf
Код: Выделить весь код
###########################
#        Variables        #
#+++++++++++++++++++++++++#
int_if="em0"
ext_if="em1"
vpn_if="ng0"
desk="192.168.1.2"
intnet="192.168.0.0/16"
#+++++++++++++++++++++++++#

#set block-policy return
set skip on lo
#scrub all
#set optimization aggressive
#scrub in all fragment reassemble
#scrub out all random-id max-mss 1400

nat on $ext_if from $int_if:network to $ext_if:network -> ($ext_if)  #проброс в локальную сеть провайдера
#nat on $vpn_if from $int_if:network to any -> ($vpn_if)


rdr pass log on $vpn_if proto tcp from any to any port 18888 -> 192.168.1.2 port 18888
rdr pass log on $vpn_if proto tcp from any to any port 80 -> 192.168.1.3 port 80
rdr pass log on $vpn_if proto tcp from any to ($vpn_if) port 81 -> 192.168.1.3 port 80

pass all
mpd5.conf
Код: Выделить весь код
startup:
        #Log sobitiy
        log +ALL -EVENTS -FRAME

default:
        load L2TP
        #load PPTP

L2TP:
        create bundle static L2TP
        set ipcp no vjcomp
        set iface idle 0
        set iface enable nat
        set iface enable tcpmssfix
        set iface up-script /usr/local/etc/mpd5/up.sh
        set iface down-script /usr/local/etc/mpd5/down.sh
        create link static L2 l2tp
        set link action bundle L2TP
#        set link mtu 1400
        set link mtu 1460
        set link latency 0
        set link max-redial 0
        set link redial-delay 60
        set link accept chap
        set link keep-alive 10 75
        set l2tp peer tp.internet.beeline.ru
        set auth authname login
        set auth password passwd
        open

Отправлено: 23:08, 25-09-2012

 

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


актуально

Отправлено: 00:17, 28-09-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 444
Благодарности: 74

Профиль | Отправить PM | Цитировать


Abadd0N, вам по идее нужен NAT на интерфейсе ng0, т.к. он и является инерфейсом, через который ваша система взаимодействует с внешним миром.
Правила NAT применяются в PF по первому совпадению (не так как правила фильтрации).
Попробуйте привести свои правила трансляции к следующему виду:

Код: Выделить весь код
nat on $vpn_if from $int_if:network to !($ext_if:network) -> ($vpn_if)
nat on $ext_if from $int_if:network to $ext_if:network -> ($ext_if)
P.S.
pass all - не есть хорошо, этим правилом вы разрешаете прохождение пакетов по всем возможным направлениям, включая доступ к внутренним ресурсам сети.

Отправлено: 10:47, 01-10-2012 | #3


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


artem_, по поводу ната - нат на внешний интерфейс осуществляется с помощью mpd
Цитата:
set iface enable nat
т.к. при использовании ната pf, инет постоянно рвался.
по поводу pass all - установлено на время тестирования.

P.S. Есть идея, что mpd конфиктит с pf, вскоре попробую l2tpd в качестве vpn клиента

Отправлено: 02:48, 22-10-2012 | #4


Аватара для Smoke2k

Старожил


Сообщения: 157
Благодарности: 12

Профиль | Отправить PM | Цитировать


не знаю почему покеты застревают внутри хоста (проборос портов во внутрь), но по поводу l2tp выяснил такую фишку, мне очень долго не удавалось поднять l2tp клиен на линуксах/BSD, проблема оказалась в самом протоколе, он должен видеть vpn сервер всё время, решается статическим маршрутом к сети провайдера, а так же исключением в правиле NAT внутри pf. Сам так делал и работало стабильно без всяких проблем. Моё провило для нат выглядило так
Код: Выделить весь код
nat on $vpn_if from $lan to !$isp_net -> $vpn_if
а следом правило для прова, тоже вроде как NAT (правда в моём случае второго NAT не было, потому что провайдер поставил свой Modem-router, который собственно и делал второй нат, который в моём случае и так не нужен был, но отключить возможности не было).
Код: Выделить весь код
nat on $ext_if from $lan to $isp_net -> $ext_if
На самом деле я не знаю если сеть провайдера нужно натить...

Никакого нат в mpd я не использую, связка такая же FreeBSD90 +mpd5 + pf (w NAT) работает по сей день (правда по техническим причинам я сейчас на ADSL, но vpn клиен тот-же mpd5)
Мой mpd5.conf:
Код: Выделить весь код
isp_l2tp:
        create bundle static L2TPNV
        set bundle disable compression round-robin encryption crypt-reqd bw-manage
        set bundle enable ipcp
        set iface disable proxy-arp
        set ipcp yes vjcomp req-pri-dns req-sec-dns
        set iface mtu 1492
        set iface enable tee on-demand
        set iface idle 0
        set iface enable tcpmssfix
        set iface up-script /usr/local/etc/mpd5/up.sh
        set iface down-script /usr/local/etc/mpd5/down.sh
#       set iface route 212.143.206.0/24

        create link static L2NV l2tp
        set link action bundle L2TPNV
        set link latency 0
        set link max-redial 0
        set link disable acfcomp check-magic protocomp shortseq
        set link deny chap-msv2 chap-msv1 eap acfcomp
        set link enable multilink passive
        set link mtu 1492
        set link keep-alive 60 180
        set l2tp peer "isp.vpn.server"
        set auth authname "username"
        set auth password "password"
        set l2tp enable length
        set l2tp self xl0
        open
Не могу сказать что слишком силён в настройках mpd и тонкостях l2tp тунеля, но конфиг в моём случае работал без проблем, кстати как видно я тут пытался добавлять статический маршрут в самом конфиге, но это либо не работало либо работало через раз и потом маршрут не удалялся, потому сделал отдельные скрипты. к тому же у меня была проблема с заменой default gateway mpd почему-то не хотел его менять, а в случае отключения тунеля возвращать обратно... статические маршруты я добавлял там же.

В моём случае все пробросы работали и работают по сей день без всяких проблем...

Надеюсь это немного поможет (хотя много времени прошло, может уже не актуально)

PS
я тут видел в некоторых манулах от pf: redirect указывают раньше правил NAT, не знаю если это может иметь значение, но попробуйте поменять (хотя наверное глупость)

и кстати я в редайректах указывал ещё и адрес на который приходит запрос
Код: Выделить весь код
rdr on $vpn_if proto { tcp udp } from any to $wan_ip port { 6881:6889 } -> $nas
Да и вот, я сейчас вспомнил, я так же сталкнулся с тем что редайрект не работал на интерфейсе где не было NAT, пытался завернуть 80-ый порт на squid, но через pf, оно ни в какую нихотело работать, вернее работало, но только в одну сторону (т.е. пакеты доходили до squid, но обратной дороги не находили). Разруливал через ipfw... возможно что в этом и кроется причина ;-)

-------
Прошу не пинать больно за не грамматный русский. Это мой родной язык, но я редко пишу по-русски, потому прошу у всех зарание меня простить. А если уж сильно напортачил, поправить! Мне будет наука ;-)


Последний раз редактировалось Smoke2k, 07-11-2012 в 07:04.


Отправлено: 06:47, 07-11-2012 | #5


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем спасибо, проблему таки решил, а была она в какомто косяке netgraph, убрал его из ядра, перекомпилил, теперь всё ок и пф норм работает и не дисконнектит и порты пробрасывает.
В ядре было:
Код: Выделить весь код
# ================== Enable NETGRAPH =======================
options         NETGRAPH
options         NETGRAPH_ASYNC
options         NETGRAPH_BPF
options         NETGRAPH_BRIDGE
options         NETGRAPH_CISCO
options         NETGRAPH_DEFLATE
options         NETGRAPH_ECHO
options         NETGRAPH_ETHER
options         NETGRAPH_FRAME_RELAY
options         NETGRAPH_GIF
options         NETGRAPH_GIF_DEMUX
options         NETGRAPH_HOLE
options         NETGRAPH_IFACE
options         NETGRAPH_IP_INPUT
options         NETGRAPH_KSOCKET
options         NETGRAPH_L2TP
options         NETGRAPH_LMI
# MPPC Для MPPC компрессии требуются специальные лицензионные файлы, которые не прилагаются в ядро
#=== options NETGRAPH_MPPC_COMPRESSION
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_ONE2MANY
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_RFC1490
options         NETGRAPH_SOCKET
options         NETGRAPH_TCPMSS
options         NETGRAPH_TEE
options         NETGRAPH_TTY
options         NETGRAPH_UI
options         NETGRAPH_VJC
#===================================================

Отправлено: 23:49, 19-12-2012 | #6



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » FreeBSD - Проброс портов Freebsd 9, mpd, pf

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Debian/Ubuntu - ПРоброс портов GRE ~user~ Общий по Linux 2 10-02-2012 12:47
FreeBSD - [решено] Проброс портов из FreeBSD через другой шлюз в сети в Интернет. Призрак Общий по FreeBSD 3 02-06-2011 11:59
Интернет - Проброс портов VbInt Сетевые технологии 0 10-10-2010 18:33
FreeBSD - проброс портов FreeBSD pashos Общий по FreeBSD 2 22-09-2010 09:41
FreeBSD - Проброс портов через NAT kernel FreeBSD 7.2 во внутренюю сеть dmitriadis Общий по FreeBSD 2 02-09-2009 21:29




 
Переход