Заметки о работе с ОС FreeBSD. Статьи об установке и настройке ПО для FreeBSD.

5 июля 2013 г.

Шифрованный туннель на FreeBSD через vtun

VTun - простое и гибкое в настройке средство для настройки туннелей поверх TCP/IP сетей. Поддерживает шифрование, сжатие и шейпинг трафика.

В данном примере я построю шифрованный туннель между основным офисом и филиалом.

Маршрутизатор в офисе:
FreeBSD 9.1 amd64
IP-адрес в публичной сети: 44.44.44.254
IP-адрес в локальной сети: 192.168.111.254

Маршрутизатор в филиале:
FreeBSD 9.1 amd64
IP-адрес в публичной сети: 44.44.55.254
IP-адрес в локальной сети: 192.168.222.254

Установка vtun

Перед установкой обновляем дерево портов, например, при помощи portsnap.
Опций для конфигурации vtun не предлагает, поэтому ставим сразу:
cd /usr/ports/net/vtun
[root@srv501gw-bgp-test /usr/ports/net/vtun]# make install clean

Конфигурация vtun 

Конфигурационный файл vtund.conf на маршрутизаторе в офисе:

options {
  port          5005;   # На каком порту будет слушать vtund
  # Syslog facility
  syslog        daemon;
  # Path to various programs
  ppp           /usr/sbin/pppd;
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
  firewall      /sbin/ipfw;
  ip              /sbin/ip;
}
# Опции по умолчанию
default {
        compress no; # Сжатие по умолчанию отключено
        speed 0;        # По умолчанию - не резать скорость (шейпинг трафика выключен)
}
Branch1 {
    type             tun; # Тип соединения (IP туннель)
    device          tun0; # Имя сетевого интерфейса
    persist          keep; # Восстанавливать соединение при обрыве связи
    stat              yes; # Статистика. Записывает данные в файл каждые 5 минут
    compress     lzo:9; # Тип и уровень сжатия (9 - максимум)
    encrypt        yes; # Шифровать соединение по методу blowfish128ecb (по умолчанию)
    passwd        Pa$$word; # Пароль для установки соединения
    proto           tcp; # Протокол tcp или udp
    keepalive     yes; # Поддерживать соединение "живым"
    up {
        ifconfig "%% 192.168.111.254 192.168.222.254 netmask 255.255.255.0
        route "add -net 192.168.222.0/24 192.168.222.254";
        };
    down {
        ifconfig "%% down";
        route "delete 192.168.222.0/24";
        };
}

Разрешаем запуск VTun в rc.conf

vtund_enable="YES"
vtund_flags="-s"


Конфигурационный файл vtund.conf на маршрутизаторе в филиале:

options {
  port          5005;
  # Syslog facility
  syslog        daemon;
  # Path to various programs
  ppp           /usr/sbin/pppd;
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
  firewall      /sbin/ipchains;
  ip              /sbin/ip;
}
# Default session options
default {
        compress no;
        speed 0;
}
Branch1 {
        type            tun;
        device         tun0;
        persist         keep;
        stat             yes;
        compress    lzo:9;
        encrypt       yes;
        passwd       Pa$$word;
        proto           tcp;
        keepalive     yes;
        up {
                ifconfig "%% 192.168.222.254 192.168.111.254 netmask 255.25
                route "add -net 192.168.111.0/24 192.168.111.254";
        };
        down {
                ifconfig "%% down";
                route "delete 192.168.111.0/24";
        };
}

Разрешаем запуск клиента VTun в rc.conf

vtunclient_enable="YES"
vtunclient_flags="-P 5005 -p Branch1 44.44.44.254"
vtund_enable="NO"

Запуск

На маршрутизаторе в офисе:
[root@srv501gw-bgp-test ~]# /usr/local/etc/rc.d/vtund start

На маршрутизаторе в филиале:
[root@srv502gw-bgp-test ~]# /usr/local/etc/rc.d/vtunclient start

Проверка работоспособности VTun

На маршрутизаторе в офисе:

[root@srv501gw-bgp-test ~]# netstat -an | grep 5005
tcp4       0      0 44.44.44.254.5005     44.44.55.254.59746    ESTABLISHED
tcp4       0      0 *.5005                 *.*                    LISTEN

[root@srv501gw-bgp-test ~]# ifconfig
...
tun0: flags=8051 metric 0 mtu 1500
        options=80000
        inet 192.168.111.254 --> 192.168.222.254 netmask 0xffffff00
        nd6 options=21
        Opened by PID 1210

[root@srv501gw-bgp-test ~]# ping 192.168.222.254
PING 192.168.222.254 (192.168.222.254): 56 data bytes
64 bytes from 192.168.222.254: icmp_seq=1 ttl=64 time=0.965 ms
64 bytes from 192.168.222.254: icmp_seq=2 ttl=64 time=1.002 ms
64 bytes from 192.168.222.254: icmp_seq=3 ttl=64 time=1.014 ms
64 bytes from 192.168.222.254: icmp_seq=4 ttl=64 time=0.830 ms
64 bytes from 192.168.222.254: icmp_seq=5 ttl=64 time=0.876 ms


На маршрутизаторе в филиале:

[root@srv502gw-bgp-test ~]# netstat -an | grep 5005
tcp4       0      0 44.44.55.254.59746    44.44.44.254.5005     ESTABLISHED

[root@srv502gw-bgp-test ~]# ifconfig
tun0: flags=8051 metric 0 mtu 1500
        options=80000
        inet 192.168.222.254 --> 192.168.111.254 netmask 0xffffff00
        inet6 fe80::250:56ff:fe84:6868%tun0 prefixlen 64 scopeid 0x6
        nd6 options=21
        Opened by PID 1170

[root@srv502gw-bgp-test ~]# ping 192.168.111.254
PING 192.168.111.254 (192.168.111.254): 56 data bytes
64 bytes from 192.168.111.254: icmp_seq=0 ttl=64 time=1.066 ms
64 bytes from 192.168.111.254: icmp_seq=1 ttl=64 time=0.819 ms
64 bytes from 192.168.111.254: icmp_seq=2 ttl=64 time=0.827 ms
64 bytes from 192.168.111.254: icmp_seq=3 ttl=64 time=0.857 ms
64 bytes from 192.168.111.254: icmp_seq=4 ttl=64 time=0.874 ms

Комментариев нет: