Исходные данные:
Интернет провайдер 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
Код: Выделить всё
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"
Код: Выделить всё
search beeline.ua
nameserver 10.10.10.2
nameserver 10.10.12.3
Код: Выделить всё
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