Имеем
# root@vpn:/root # uname -a
FreeBSD vpn.server 9.1-STABLE FreeBSD 9.1-STABLE #0 r249412M: Sat Apr 13 02:34:28 MSK 2013 root@vpn.deathstar.name:/usr/obj/usr/src/sys/GENERIC amd64

Цель — поднять OpenVPN сервер для выхода в интернет.

1) Настройка NAT

Добавляем в файл /boot/loader.conf такие строки
ipfw_nat_load="YES"
libalias_load="YES"

Создаем правила для IPFW ( например файл /etc/firewall )
root@vpn:/root # ee /etc/firewall
#!/bin/sh
ipfw='/sbin/ipfw -q'
${ipfw} flush
${ipfw} add check-state
${ipfw} table all flush
${ipfw} add drop tcp from 172.17.0.0/24 135,137-139 to 172.17.0.0/24 via rl0
${ipfw} add drop tcp from 172.17.0.0/24 135,137-139 to any via rl0
${ipfw} add drop udp from 172.17.0.0/24 135,137,138,139 to 172.17.0.0/24 via rl0
${ipfw} add drop udp from 172.17.0.0/24 135,137-139 to any via rl0
${ipfw} nat 1 config if re0 reset same_ports
${ipfw} add nat 1 ip from 172.17.0.0/24 to any via re0
${ipfw} add nat 1 ip from any to ВНЕШНИЙ_IP_СЕРВЕРА
${ipfw} add allow all from any to any

и делаем исполняемым
root@vpn:/root # chmod +x /etc/firewall

Для загрузки правил при старте добавляем в /etc/rc.conf
gateway_enable=YES
firewall_enable=YES
firewall_script="/etc/firewall"

и перезапускаем сервер
root@vpn:/root # reboot

2) Установка, настройка и запуск OpenVPN сервера

root@vpn:/root # make install clean -С /usr/ports/security/openvpn ( опции оставляем по умолчанию как есть )

Создаем каталоги для конфигов
root@vpn:/root # mkdir /usr/local/etc/openvpn/
root@vpn:/root # mkdir /usr/local/etc/openvpn/ccd

Копируем каталог easy-rsa в каталог конфигов OpenVPN
root@vpn:/root # cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/

Переходим в скопированный каталог
root@vpn:/root # cd /usr/local/etc/openvpn/easy-rsa/

Переходим в оболочку sh
# sh

Выполняем следующим команды:
# . ./vars
# ./clean-all
# ./build-ca

Будут спрашивать данные для сертификата, заполните их в соотвествии с вопросами.

# ./build-key-server server
Common name должно быть server. На последние вопросы отвечать Y
# ./build-dh

Теперь делаем сертификат для клиента. Тут также на последние вопросы отвечаем Y
# ./build-key client

Выходим из sh оболочки
# exit

Cоздаем ключ для tls-аутификации
root@vpn:/root # /usr/local/sbin/openvpn --genkey --secret /usr/local/etc/openvpn/easy-rsa/keys/ta.key

Создаем файл server.conf , как показано ниже
root@vpn:/root # ee /usr/local/etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /usr/local/etc/openvpn/easy-rsa/keys/ca.crt
cert /usr/local/etc/openvpn/easy-rsa/keys/server.crt
key /usr/local/etc/openvpn/easy-rsa/keys/server.key
dh /usr/local/etc/openvpn/easy-rsa/keys/dh1024.pem
server 172.17.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
tls-server
tls-auth /usr/local/etc/openvpn/easy-rsa/keys/ta.key 0
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

Cоздаем файл-конфиг для юзера client ( в нем указывается назначаемый IP адрес и шлюз для пользователя )
root@vpn:/root # ee /usr/local/etc/openvpn/ccd/client
ifconfig-push 172.17.0.2 172.17.0.1

Добавляем в /etc/rc.conf следующие строки для автозагрузки нашего OpevVPN сервера
openvpn_enable="YES"
openvpn_if="tun"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
openvpn_dir="/usr/local/etc/openvpn"

Запускаем
root@vpn:/root # /usr/local/etc/rc.d/openvpn start
Starting openvpn.
add net 172.17.0.0: gateway 172.17.0.2

4) Настройка OpenVPN клиента ( на примере Microsoft Windows 8 Professional Edition, 64-bit)

Скачиваем с сервера к себе на компьютер файлы
/usr/local/share/doc/openvpn/easy-rsa/keys/ca.crt
/usr/local/share/doc/openvpn/easy-rsa/keys/client.crt
/usr/local/share/doc/openvpn/easy-rsa/keys/client.key
/usr/local/etc/openvpn/easy-rsa/keys/ta.key

Скачиваем клиент отсюда ( галочки оставьте по умолчанию )
http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.1-I001-x86_64.exe

Переходим в каталог OpenVPN ( C:Program FilesOpenVPN )
Копируем из каталога sample-config файл client.ovpn в каталог config и открываем блокнотом.
на Windows 8 обязательно сначала запустить «Блокнот» от Администратора, перейти в каталог с файлом и открыть уже из блокнота

 

Удаляем содержимое файла и вставляем туда вот такие строки
client
dev tun
proto udp
remote ВНЕШНИЙ_IP_СЕРВЕРА 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-client
tls-auth ta.key 1
comp-lzo
verb 3

и сохраняем. Ложим скачанные с сервера файлы ca.crt client.crt client.key ta.key в каталог C:Program FilesOpenVPNconfig рядом с файлом client.ovpn

 

Запускаем OpenVPN клиент от Администратора или правим свойства ярлыка на Рабочем столе ( ставим галочку «Запускать от Администратора» )

и подключаемся

После того как мы видим назначенный нам внутренний IP адрес

заходим на любой сайт-сервис проверки IP адреса ( http://2ip.ru или http://myip.ru ) и смотрим информацию об IP адресе и радуемся.