Имеем
# 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 (далее…)