Archive

Posts Tagged ‘openvpn’

Разные внешние IP для разных OpenVPN-клиентов

April 19th, 2010

Иногда появляется необходимость сделать для разных подключающихся клиентов разные исходящие IP-адреса. Большая часть настройки такая же как в статье “Установка OpenVPN на Linux“. Покажу лишь отличия в ситуации с двумя клиентами:
В server.conf:

server 10.10.0.0 255.255.0.0
client-config-dir /etc/openvpn/ccd

/etc/openvpn/ccd/client1:

ifconfig-push 10.10.10.1 10.10.10.2
iroute 10.10.10.0 255.255.255.0

/etc/openvpn/ccd/client2:

ifconfig-push 10.10.20.1 10.10.20.2
iroute 10.10.20.0 255.255.255.0

Ну и правил для ната должно быть тоже два:

iptables -t nat -A POSTROUTING -s 10.10.10.0/255.255.255.0 -o venet0 -j SNAT --to-source first-ext-ip
iptables -t nat -A POSTROUTING -s 10.10.20.0/255.255.255.0 -o venet0 -j SNAT --to-source second-ext-ip

linux, vpn

Установка OpenVPN на Linux (в OpenVZ контейнер)

March 2nd, 2009

Ставим openvpn из yum-а или из RPM http://dag.wieers.com/rpm/packages/openvpn/

yum install openvpn lzo-devel
chkconfig openvpn on

Если ставится версия 2.0 то лучше поставить поверх из исходников последнюю версию (2.1 или старше) и переписать бинарник /usr/local/sbin/openvpn -> /usr/sbin/openvpn

На хост машине для контейнера надо разрешить tun-устройства и модули ната для iptables:

vzctl set 900 --save --devnodes net/tun:rw
vzctl stop 900
vzctl set 900 --save --iptables "ip_conntrack iptable_filter iptable_mangle ipt_state iptable_nat ip_nat_ftp ip_conntrack_ftp"
vzctl start 900

Затем подготавливаем папки конфигов:

cp -R /usr/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
chmod 777 *
mkdir /etc/openvpn/keys

Для версии 2.2 и старше будет чуть по другому:

cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/2.0
chmod 777 *
mkdir /etc/openvpn/keys
touch /etc/openvpn/keys/index.txt
echo "01" > /etc/openvpn/keys/serial

в vars-файле в /etc/openvpn/easy-rsa/2.0 заменяем строку:

export KEY_DIR=...

на

export KEY_DIR=/etc/openvpn/keys

Генерируем все сертификаты:

cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret /etc/openvpn/keys/ta.key
./build-key client1
./build-key client2

В процессе генерации сертификатов можно ничего не вводить. Все оставить по дефолту.
Последняя строчка делается столько раз, сколько надо ключей для клиентов.
Не забыть, что если дата на клиенте меньше чем дата на сервере в момент генерации сертификата – подключение не пройдет.

Включаем роутинг:

echo 1 > /proc/sys/net/ipv4/ip_forward

и правим соотвествующую строчку в sysctl.conf

Конфиг для сервера /etc/openvpn/server.conf:

proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-to-client
duplicate-cn
keepalive 10 60
ping-timer-rem
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 4
mute 10
log /var/log/openvpn/openvpn.log
status /var/log/openvpn/openvpn-status.log
push "dhcp-option DNS 208.67.222.222"

Ставим, включаем и делаем роутинг в iptables:

yum install iptables
# делаем автостарт файрволу
chkconfig iptables on
# правило для нат-а, VE_IP_ADDRESS заменить на IP, который будет у вас "исходящим" для впн-трафика
iptables -t nat -A POSTROUTING -s 10.10.10.0/255.255.255.0 -o venet0 -j SNAT --to-source VE_IP_ADDRESS
# сохраняем правила
/etc/init.d/iptables save
# еще раз смотрим на сохраненные правила и проверяем
iptables -t nat -L
mkdir /var/log/openvpn
chmod 777 /var/log/openvpn
service openvpn start

Конфиг одного клиента (будет работать для Windows XP, Windows Vista и Windows 7):

dev tun
proto tcp
remote vpn.domain.com
client
resolv-retry infinite
redirect-gateway def1
ca ca.crt
cert client1.crt
key client1.key
tls-client
tls-auth ta.key 1
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun
verb 4
route-metric 1
route-method exe
route-delay 2

Для Windows Vista, Windows 7 запускать клиента надо с админскими правами через батник:

cd c:\vpn\
"c:\program files\openvpn\bin\openvpn.exe" c:\vpn\client1.ovpn
pause

ЗЫ. На хостовой ноде может быть не загружен модуль ядра tun. Тогда:

modprobe tun
modprobe -l |grep tun

linux , ,

установка OpenVPN на FreeBSD

January 20th, 2009

Установим OpenVPN в самой простой конфигурации, когда есть один статический ключ и мы хотим чтобы пользователь ходил по инету через впн:

cd /usr/ports/security/openvpn && make install
cd /etc
openvpn --genkey --secret static.key

Конфиг положим сюда /etc/openvpn.conf:

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
comp-lzo
user nobody
group nobody
daemon
log /var/log/openvpn.log
status /var/log/openvpn-status.log
verb 4
mute 10

В rc.conf:

openvpn_enable="YES"
openvpn_configfile="/etc/openvpn.conf"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
gateway_enable="YES"

В /etc/ipnat.rules:

map bge0 10.8.0.0/16 -> 0/32

где bge0 внешний интерфейс сервера.

Включаем openvpn, роутинг и нат:

/etc/rc.d/ipnat start
/usr/local/etc/rc.d/openvpn start
sysctl net.inet.ip.forwarding=1

Теперь на клиента надо скопировать static.key. Поставить виндовый клиент и сделать такой конфиг-файл:

proto udp
remote ип-сервера
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
redirect-gateway

Надо отметить, что эта конфигурация пригодна для эксплуатации одновременно только с одним клиентом.

FreeBSD, vpn , ,