mpd5 + PF проблема с NATом

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
igorvv
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-03-22 14:00:56
Контактная информация:

mpd5 + PF проблема с NATом

Непрочитанное сообщение igorvv » 2010-03-22 15:55:32

Помогите пожалуйста советом что/где почитать или готовым решением.
Исходные данные:
Интернет провайдер Beeline выпускает в инет через vpn (pptp, "белый" динамический IP)
Локалка провайдера 10.61.0.0/24, DNS 10.10.10.2, GW 10.61.0.1 (IP-адресс назначается по DHCP)
Домашняя локалка 192.168.1.0/24
Сервер FreeBSD 8.0 c mpd5 + PF с двумя сетевыми интерефейсами

Проблема в следующем, с текущими настройками все работает за исключением некоторых сайтов, например rutracker.org не открывается на клиентском компе (WinXP). В тоже время если устанавливать vpn-соединения с WinXP все работает как положено
Текущие настройки:

Код: Выделить всё

#uname -a
FreeBSD iserver.inet 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UTC 2009     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
/etc/rc.conf

Код: Выделить всё

font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
keymap="ru.koi8-r"
mousechar_start="3"
saver="logo"
scrnmap="koi8-r2cp866"

hostname="iserver.inet"
gateway_enable="YES"
ifconfig_fxp0="DHCP"
ifconfig_em0="inet 192.168.1.1 netmask 255.255.255.0"

ntpdate_enable="YES"
ntpdate_flags="ru.pool.ntp.org"
sshd_enable="YES"
ddclient_enable="YES"

### Firewall
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""

### VPN
mpd_enable="YES"
mpd_flags="-b"
dhcpd_enable="YES"
dhcpd_ifaces="em0"
/etc/resolv.conf

Код: Выделить всё

search beeline.ua
nameserver 10.10.10.2
nameserver 10.10.12.3
/etc/pf.conf

Код: Выделить всё

int_if = "em0" # Смотрит в домашнюю локалку
ext_if = "fxp0"         # Локальная сеть провайдера
vpn_if = "ng0"          # PPTP интерфейс

# Домашние компы
icomp = "192.168.1.3/32"
ibook = "192.168.1.4/32"

torrent1 = "51413"
torrent2 = "51412"

table <BLACKLIST> persist

icmp_type = "echoreq"
ext_srv = "{ ftp, http, 9091 }"
int_srv = "{ ftp, http, domain, bootps, ntp, 137:139, 445, 9091 }"


## Options
set block-policy return
set state-policy floating
set loginterface $ext_if
set limit { frags 100000, states 100000 }
set optimization normal
set skip on lo0
scrub in all
scrub out all random-id max-mss 1460

## NAT & RDR
nat on $ext_if proto { tcp udp icmp } from $int_if:network to any -> ($ext_if)
nat on $vpn_if proto { tcp udp icmp gre } from $int_if:network to any -> ($vpn_if)

rdr pass on $vpn_if inet proto tcp from any to $vpn_if port $torrent1 -> $icomp
rdr pass on $ext_if inet proto tcp from any to $ext_if port $torrent1 -> $icomp
rdr pass on $vpn_if inet proto tcp from any to $vpn_if port $torrent2 -> $ibook
rdr pass on $ext_if inet proto tcp from any to $ext_if port $torrent2 -> $ibook

## Rules
block log all
block drop log quick from <BLACKLIST>
pass quick on lo0 all

# Правила для исходящих соединений
pass out log on $int_if inet proto { tcp, udp } all flags S/SA keep state
pass out log on $ext_if inet proto { tcp, udp } all flags S/SA keep state
pass out log on $vpn_if inet proto { tcp, udp } all flags S/SA keep state

# Общие правила для входящих соединений
pass in log inet proto icmp all icmp-type $icmp_type keep state

# Правила для входящих соединений из внутренней сети сети
pass in on $int_if inet proto { tcp, udp } from any to any keep state
pass in log on $int_if inet proto { tcp, udp } from $int_if:network to $int_if port $int_srv flags S/SA keep state
pass in log on $int_if proto tcp from $int_if:network to $int_if port ssh synproxy state \
( max-src-conn-rate 2/60, overload <BLACKLIST> flush global )

# Правила для входящих соединений из internet и beeline
pass in log on $ext_if inet proto { tcp, udp } from any to $ext_if port $ext_srv flags S/SA keep state
pass in log on $vpn_if inet proto { tcp, udp } from any to $vpn_if port $ext_srv flags S/SA keep state
pass in log on $ext_if  proto tcp from any to $ext_if port ssh synproxy state \
( max-src-conn-rate 2/120, overload <BLACKLIST> flush global )
pass in log on $vpn_if  proto tcp from any to $vpn_if port ssh synproxy state \
( max-src-conn-rate 2/120, overload <BLACKLIST> flush global )

Код: Выделить всё

/usr/local/etc/mpd5/mpd.conf
startup:
        # configure mpd users
        set user foo bar admin
        set user foo1 bar1
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 0.0.0.0 5006
        set web open

default:
        load vpn

vpn:

        create bundle static B1
        set iface route default
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0

        create link static L1 pptp
        set link action bundle B1
        set auth authname XXXXXXXXXX@intrnet.beeline.ua
        set auth password StRoNgPaSsWoRd
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
        set pptp peer vpn2.beeline.ua
        set pptp disable windowing
        open
Заранее спасибо за помощь!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

Re: mpd5 + PF проблема с NATом

Непрочитанное сообщение Гость » 2010-03-22 16:09:08

tcpmss добавте в mpd
и уберите mss окно в PF
sсrub all достаточно будет

Аватара пользователя
baton4eg
сержант
Сообщения: 274
Зарегистрирован: 2009-10-11 14:36:35
Контактная информация:

Re: mpd5 + PF проблема с NATом

Непрочитанное сообщение baton4eg » 2010-03-22 16:22:13

а если попробывать mtu 1492?
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!" (c)
"Я ем руками, она вилкой и ножом, я бью вилкой и ножом, она руками" (с)

igorvv
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-03-22 14:00:56
Контактная информация:

Re: mpd5 + PF проблема с NATом

Непрочитанное сообщение igorvv » 2010-03-22 18:54:37

Гость писал(а):tcpmss добавте в mpd
и уберите mss окно в PF
sсrub all достаточно будет
Добавил в mpd.conf как вы и советовали

Код: Выделить всё

set iface enable tcpmssfix
Всё заработало
Спасибо большое! С меня причитается :drinks:

baton4eg, mtu пока не менял, попробую чуть позже