The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"help FreeBSD 8.0  2xpppoe + vpn клиенты"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"help FreeBSD 8.0  2xpppoe + vpn клиенты"  +/
Сообщение от stalkerarm email(ok) on 10-Мрт-11, 13:01 
есть один провайдер, от него два канала на обоих авторизация по пппое, первый безлимит, второй оплата по трафику. оба соединения с динамическими ип, надо что бы часть клиентов из локалки ходили по безлимиту, а часть по трафику + ко всему из инета через канал который по трафику, должно подсоединяться три клиента по впн для доступа к локальным машинам.
как лучше организовать эту схему?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "help FreeBSD 8.0  2xpppoe + vpn клиенты"  +/
Сообщение от михалыч (ok) on 10-Мрт-11, 21:15 
> есть один провайдер, от него два канала на обоих авторизация по пппое,
> первый безлимит, второй оплата по трафику. оба соединения с динамическими ип,
> надо что бы часть клиентов из локалки ходили по безлимиту, а
> часть по трафику + ко всему из инета через канал который
> по трафику, должно подсоединяться три клиента по впн для доступа к
> локальным машинам.
> как лучше организовать эту схему?

Когда спрашивают "как лучше", это означает минимум пара вариантов.
Вы не представили ни одного. ))
Какие трудности?
В общем и целом я бы так решал:
1 в ядро
options IPFIREWALL_NAT
options ROUTETABLES=2
2 установил mpd
3 конфиг mpd как клиент pppoe и сервер vpn
при поднятии pppoe на интерфейсах up скриптами задать маршруты по умолчанию для обоих pppoe, для каждого свой дефолт.
4 закинуть тех кого надо по безлимитки в таблицу 1 (setfib 1) и направить по безлимитному каналу pppoe, остальные пользователи, соответственно, пойдут по другому, лимитируемому каналу.
5 заюзать какой нибудь халявный динамический днс и привязать его к лимитируемому интерфейсу pppoe, чтобы использовать доменное имя для захода с внешки.

В общем и целом как-то так..

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "help FreeBSD 8.0  2xpppoe + vpn клиенты"  +/
Сообщение от stalkerarm email(ok) on 11-Мрт-11, 14:43 
>[оверквотинг удален]
> 2 установил mpd
> 3 конфиг mpd как клиент pppoe и сервер vpn
> при поднятии pppoe на интерфейсах up скриптами задать маршруты по умолчанию для
> обоих pppoe, для каждого свой дефолт.
> 4 закинуть тех кого надо по безлимитки в таблицу 1 (setfib 1)
> и направить по безлимитному каналу pppoe, остальные пользователи, соответственно, пойдут
> по другому, лимитируемому каналу.
> 5 заюзать какой нибудь халявный динамический днс и привязать его к лимитируемому
> интерфейсу pppoe, чтобы использовать доменное имя для захода с внешки.
> В общем и целом как-то так..

динднс итак использую,
а если сделать pppoe клиент через ppp,
а подключение впн клиентов через mpd
не погли бы помоч с правилами фаервола как лучше прописать и маршрутами?
сейчас работает всё через одно подключение через ppp
ppp.conf:
###   PPPoE configuration file
stc:
set device PPPoE:re0
set authname login
set authkey pass
set timeout 0
set redial 10+10-5.3 20
set reconnect 99 15
set dial
set login
add default HISADDR

# NAT
nat enable yes
nat port tcp 192.168.0.100:3389  3389
nat port tcp 192.168.0.101:3389  3388
nat log yes
nat same_ports yes
nat unregistered_only yes
enable dns


ifconfig:
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:13:46:28:6e:86
        inet 192.168.0.102 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1470
        inet 85.175.x.x --> 85.175.x.x netmask 0xffffffff
        Opened by PID 355


mpd.conf
startup:
        set user admin password admin
        set console self 127.0.0.1 5005
        set console open
        set web self 0.0.0.0 5006
        set web open

default:
        load pptp_server

pptp_server:
        set ippool add poolsat 192.168.100.200 192.168.100.220
        create bundle template B
        set iface enable proxy-arp
        set iface idle 0
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 192.168.100.102/32 ippool poolsat
        set ipcp dns 192.168.0.100
        set ipcp nbns 192.168.0.100

# Enable Microsoft Point-to-Point encryption (MPPE)
        set bundle enable compression
        set ccp yes mppc
        set mppc yes compress e40 e56 e128 stateless

# Create clonable link template named L
        create link template L pptp
# Set bundle template to use
        set link action bundle B
# Multilink adds some overhead, but gives full 1500 MTU
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap eap
        set link enable chap
        set link enable chap-msv1
        set link enable chap-msv2
# We reducing link mtu to avoid GRE packet fragmentation.
        set link mtu 1460
        set link keep-alive 10 60
# Configure PPTP and open link
        set pptp self tun0
# Allow to accept calls
        set link enable incoming

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "help FreeBSD 8.0  2xpppoe + vpn клиенты"  +/
Сообщение от михалыч (ok) on 12-Мрт-11, 19:55 

Хм.., однако..
ОК, условимся,

В ядре есть все что требуется для IPFW NAT ROUTETABLES NETGRAPH
Установлен MPD ( разумеется из портов :) )

em0 интерфейс безлимитки
em1 интерфейс лимитки
em2 интерфейс смотрит в локальную сеть

определяемся

ng0 = pppoe0 = em0 => безлимитка
ng1 = pppoe1 = em1 => лимитка

cat /usr/local/etc/mpd5/mpd.conf

startup:
        # configure mpd users
        set user admin foobar admin
        set user foo bar
        # 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 pppoe0
        load pppoe1
        load pptp_server

pppoe0:
        create bundle static B1
        set iface up-script "/usr/local/etc/mpd5/ng0_up.sh"
        set iface down-script "/usr/local/etc/mpd5/ng0_down.sh"
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0

        create link static L1 pppoe
        set link action bundle B1

        set auth authname "name1"
        set auth password "passwd1"

        set link max-redial 0
        set link mtu 1492
        set link keep-alive 5 15
        set pppoe iface em0
        open

pppoe1:
        create bundle static B2
        set iface up-script "/usr/local/etc/mpd5/ng1_up.sh"
        set iface down-script "/usr/local/etc/mpd5/ng1_down.sh"
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0

        create link static L2 pppoe
        set link action bundle B2

        set auth authname "name2"
        set auth password "passwd2"

        set link max-redial 0
        set link mtu 1492
        set link keep-alive 5 15
        set pppoe iface em1
        open

pptp_server:
        create bundle template B
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 172.16.1.1/32 0.0.0.0/0
#       set ipcp dns 192.168.10.2

        create link template L pptp
        set link action bundle B
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1472
        set pptp self 192.168.10.2
#       set pptp disable windowing
        set link enable incoming


Скрипты up и down автоматически выполняющиеся при взлете и падении pppoe
(не забыть сделать исполняемыми! :) )

Для первого интерфейса em0 (ng0 = pppoe0)
cat /usr/local/etc/mpd5/ng0_up.sh

#!/bin/sh
# ------------------ КОНФИГУРИМ NAT 1 НА ИНТЕРФЕЙСЕ NG0 -------------------- #
/sbin/ipfw -q add 60 nat 1 all from any to any out xmit $1 tagged 1
/sbin/ipfw -q add 61 nat 1 all from any to $3 in recv $1

# -------------------- ДОБАВЛЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ ---------------------- #
/sbin/route -q add default -iface $1

# ------------ ОБЪЯВЛЯЕМ КОНФИГУРАЦИЮ NAT 1 НА ИНТЕРФЕЙСЕ NG0 -------------- #
/sbin/ipfw -q nat 1 config if $1 reset


cat /usr/local/etc/mpd5/ng0_down.sh

#!/bin/sh
# ------------------- УДАЛЯЕМ ПРАВИЛА 60 И 61 ДЛЯ NAT 1 -------------------- #
/sbin/ipfw -q delete 60 61

# ------- ПРОВЕРЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ NG0 И ЕСЛИ ОН ЕСТЬ - УДАЛЯЕМ ------ #
/usr/bin/netstat -nr | /usr/bin/grep 'default' | /usr/bin/awk '{print $2}' | /usr/bin/grep 'ng0'
if [ $? = 0 ]; then
        /sbin/route -q delete default -iface `ifconfig ng0 | grep 'inet' | awk '{print $2}'`
fi

# --------------------------- УДАЛЯЕМ САМ NAT 1 ---------------------------- #
/sbin/ipfw -q nat 1 delete


Ну и соответственно для второго интерфейса em1 (ng1 = pppoe1)
cat /usr/local/etc/mpd5/ng1_up.sh

#!/bin/sh
# ------------------ КОНФИГУРИМ NAT 2 НА ИНТЕРФЕЙСЕ NG1 -------------------- #
/sbin/ipfw -q add 70 nat 2 all from any to any out xmit $1 tagged 2
/sbin/ipfw -q add 71 nat 2 all from any to $3 in recv $1

# -------------------- ДОБАВЛЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ ---------------------- #
/sbin/route -q add default -iface $1

# ------------ ОБЪЯВЛЯЕМ КОНФИГУРАЦИЮ NAT 2 НА ИНТЕРФЕЙСЕ NG1 -------------- #
/sbin/ipfw -q nat 2 config if $1 reset


cat /usr/local/etc/mpd5/ng1_down.sh

#!/bin/sh
# ------------------- УДАЛЯЕМ ПРАВИЛА 70 И 71 ДЛЯ NAT 2 -------------------- #
/sbin/ipfw -q delete 31 70 71

# ------- ПРОВЕРЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ NG1 И ЕСЛИ ОН ЕСТЬ - УДАЛЯЕМ ------ #
/usr/bin/netstat -nr | /usr/bin/grep 'default' | /usr/bin/awk '{print $2}' | /usr/bin/grep 'ng1'
if [ $? = 0 ]; then
        /sbin/route -q delete default -iface `ifconfig ng1 | grep 'inet' | awk '{print $2}'`
fi

# --------------------------- УДАЛЯЕМ САМ NAT 2 ---------------------------- #
/sbin/ipfw -q nat 2 delete


В /etc/rc.conf есть строка
firewall_type="/etc/fw.conf"
и defaultrouter НЕ ЗАДАН!

Минимальные правила фаервола

cat /etc/fw.conf

# ------------------- ОЧИЩАЕМ ПЕРЕД ЗАГРУЗКОЙ ВСЕ ПРАВИЛА ------------------ #
-f -q flush

# ------------------------ КОНФИГУРИМ multi-routing ------------------------ #
add 50 setfib 0 tag 1 all from table(0) to any
add 50 setfib 1 tag 2 all from table(1) to any

# ----------------------------- ПЕТЛЕВОЙ ИФЕЙС ----------------------------- #
add 100 allow all from any to any via lo0
add 200 deny all from any to 127.0.0.0/8
add 300 deny all from 127.0.0.0/8 to any

# ------------------------------ РАЗРЕШАЕМ ВХОД ---------------------------- #
add 1100 allow all from any to { table(0) or table(1) } out xmit em2

# ------------------------------ РАЗРЕШАЕМ ВЫХОД --------------------------- #
add 1200 allow all from { table(0) or table(1) } to any in recv em2

# ------------------------------ ВРУБАЕМ ЛОГ ------------------------------- #
add 2000 deny log proto all

add 9000 allow ip from any to any
add 65000 deny ip from any to any


Конфиг mpd в части сервера pptp_server рихтануть конкретно для себя, здесь приведен для примера, добавить необходимые правила в фаервол.

Условимся, что в таблице 0 находятся IP адреса для анлимит, в таблице 1 - лимит
Для пробы проверяем:

# ipfw table 0 add 192.168.0.10
# ipfw table 0 add 192.168.0.11

# ipfw table 1 add 192.168.0.100
# ipfw table 1 add 192.168.0.111

Соответственно адреса 10 и 11 пойдут по анлиму, а 100 и 111 по лиму ))

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру