Подключение к корбине с помощью mpd5

Установка

# cd /usr/ports/net/mpd5
# make install clean

В опциях установки ничего не выбирал.

Настройка

Добавляем в /etc/rc.conf:

mpd_enable="YES"

Конфиги хранятся в папке /usr/local/etc/mpd5. Файл mpd.conf:

startup:
    # логин и пароль для консоли управления
    set user пользователь пароль
    set console self 127.0.0.1 5005
    set console open
    set web self 127.0.0.1 5006
    set web open

default:
    # или load vpn-pptp
    # все зависит от того как хочется подключаться
    load vpn-l2tp

vpn-pptp:
    create bundle static PPTP
    set iface up-script "/usr/local/etc/mpd5/up.sh PPTP"
    set iface down-script /usr/local/etc/mpd5/down.sh
    set ipcp ranges 0.0.0.0/0 0.0.0.0/0
    set ipcp no vjcomp
    create link static L1 pptp
    set link action bundle PPTP
    set link accept chap
    set link latency 0
    set link max-redial 0
    set link mtu 1460
    set link keep-alive 60 180
    set pptp peer 85.21.0.17
    set auth authname логин
    set auth password пароль
    set pptp disable windowing
    open

vpn-l2tp:
    create bundle static L2TP
    set iface up-script "/usr/local/etc/mpd5/up.sh L2TP"
    set iface down-script /usr/local/etc/mpd5/down.sh
    set ipcp ranges 0.0.0.0/0 0.0.0.0/0
    set ipcp no vjcomp
    create link static L2 l2tp
    set link action bundle L2TP
    set link accept chap
    set link latency 0
    set link max-redial 0
    set link mtu 1460
    set link keep-alive 60 180
    set l2tp peer tp.corbina.net
    set auth authname логин
    set auth password пароль
    open

Файл /usr/local/etc/mpd5/up.sh:

#!/bin/sh

gate=`netstat -rn | grep default | awk '{print $2}'`
vpn=`echo $5 | awk 'sub(/.[0-9]*$/,"")'`
time=`date "+%H:%M:%S"`
echo "$vpn.0/24" > /tmp/vpn_gw

/sbin/route -q delete $5
/sbin/route -nq add "$vpn.0/24" $gate
/sbin/route change default $5 -ifp $2

netstat=`netstat -rnf inet`
ifconfig=`ifconfig ng0`

echo "*************************************************************************
$time -$1-  $2->$2 $3->$3 WAN($4)->$4 GW($5)->$5
interface = $2
gate = $gate
vpn_lan = $vpn/24
--------------------------------------------------------------------------
$ifconfig
--------------------------------------------------------------------------
$netstat
--------------------------------------------------------------------------
" >> /var/log/mpd.log[/code]
Файл /usr/local/etc/mpd5/down.sh:
[code lang="bash"]#!/bin/sh

gate=`netstat -rn | grep 10.0.0.0 | awk '{print $2}'`
vpn=`cat /tmp/vpn_gw`

/sbin/route -q delete $vpn
/sbin/route delete default
/sbin/route -nq add default $gate

netstat=`netstat -rnf inet`

echo "*************************************************************************
gate = $gate -> UP
vpn_lan = $vpn -> DOWN
$time -$1- DOWN
--------------------------------------------------------------------------
$netstat
--------------------------------------------------------------------------
" >> /var/log/mpd.log

Возможные проблемы

Бывает так, что если ваша сеть построена по принципу:

                                              ---- комп1
интернет ---- freebsd (mpd5 + pf) ---- роутер ---- комп2
                                              ---- комп3

то с компьютеров может все пинговаться, но ничего не открываться в браузере. Все это происходит из-за параметра MTU. В компьютерных сетях термин Maximum Transmission Unit (MTU) используется для определения максимального размера блока (в байтах), который может быть передан на канальном уровне коммуникационного протокола. Что можно сделать? Можно попробовать уменьшить значение mtu в конфиге mpd5 до 1462. Вот что на эту тему говорится в википедии:

Технология Path MTU discovery

Хотя фрагментация решает проблему несоответствия размеров пакетов и значения MTU, она ощутимо снижает производительность сетевых устройств. В связи с этим, в 1988 году была предложена альтернативная технология, названная Path MTU discovery (RFC 1191). Суть технологии заключается в том, что при соединении двух хостов, устанавливается параметр DF (don’t fragment, не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP (Internet Control Message Protocol) типа Destination is unreachable (Хост недоступен). К сообщению об ошибке прилагается значение MTU узла. Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.

Однако, и у этой технологии существуют потенциальные проблемы. Все большее число систем настраиваются администраторами на блокирование ICMP пакетов (в том числе с целью предотвращения отказ в обслуживании). В результате, если размер пакета не соответствует значению MTU на определенном участке, пакет отбрасывается, а хост-отправитель не может получить информацию о значении MTU и не отправляет пакет заново. Поэтому соединение между хостами не устанавливается. Проблема получила название MTU Discovery Black Hole (RFC 2923). Одной из распространенных проблем при работе в сети, блокирующей ICMP пакеты, является работа в IRC, когда пользователь успешно проходит авторизацию, но не может получить так называемое MOTD (message of the day), в результате чего использование сети представляется невозможным.

Проблема представляет потенциальную опасность для любого PPPoE соединения, использующего MTU меньше типового (1500 байт).

Существует несколько вариантов решения этой проблемы. Самым простым, безусловно, является отмена фильтрации пакетов ICMP. Однако зачастую подобная операция находится вне компетенции пользователя. Поэтому проблему решают путем ручной настройки размера передаваемого пакета на шлюзе пользователя. Для этого меняют значение MSS (максимальный размер сегмента, меньше MTU на 40 байт). При установке соединения хосты обмениваются информацией о максимальном размере сегмента, который каждый из них сможет принять. Поэтому меняя значение MSS, заставляют оба хоста обмениваться пакетами, которые заведомо сможет принять шлюз пользователя без фрагментации.

Кроме того, существуют методы отмены бита DF c целью разрешения фрагментации. Однако метод корректировки MSS является предпочтительным.

1 Комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *