Дистрибутив ОС — Debian 6
Итак начнем:
Устанавливаем OpenVPN и dnsmasq
aptitude install openvpn udev dnsmasq
Далее копируем скрипты генерации ключей
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
Потом нам обычно предлагают поправить файл /etc/openvpn/easy-rsa/2.0/vars, но если шлюз делается «для себя», то этот пункт совершенно необязателен. Если же хочется красоты то в конце вышеуказанного файла правим следующее:
export KEY_COUNTRY="XX" export KEY_PROVINCE="XX" export KEY_CITY="City" export KEY_ORG="MyCompany" export KEY_EMAIL="habr@habr.ru"
После правки vars генерируем корневой сертификат
cd /etc/openvpn/easy-rsa/2.0/ . /etc/openvpn/easy-rsa/2.0/vars . /etc/openvpn/easy-rsa/2.0/clean-all . /etc/openvpn/easy-rsa/2.0/build-ca
Далее генерируем сертификаты сервера и клиента\клиентов(вместо cli1,cli2 можно придумывать удобные для себя названия)
. /etc/openvpn/easy-rsa/2.0/build-key-server server . /etc/openvpn/easy-rsa/2.0/build-key-server cli1 . /etc/openvpn/easy-rsa/2.0/build-key-server cli2
Потом генерируем параметры Диффи-Хеллмана
. /etc/openvpn/easy-rsa/2.0/build-dh
Раскладываем ключи, на клиентскую сторону нужно отдать файлы ca.crt cli1.crt cli1.key, а в директорию /etc/openvpn положить файлы ca.crt ca.key dh1024.pem server.crt server.key
cd /etc/openvpn/easy-rsa/2.0/keys cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn
Теперь скопируем в директорию /etc/openvpn пример конфига, который поставляется вместе с ПО.
cd /usr/share/doc/openvpn/examples/sample-config-files gunzip -d server.conf.gz cp server.conf /etc/openvpn/
Чтобы наш впн сервер раздавал интернет своим клиентам в /etc/openvpn/server.conf допишем
push "redirect-gateway def1" push "dhcp-option DNS 10.8.0.1"
Далее включаем ip-forwarding
в файле /etc/sysctl.conf раскомментируем строку
net.ipv4.ip_forward=1
а в консоли выполним
echo 1 > /proc/sys/net/ipv4/ip_forward
чтобы изменения применились без перезагрузки.
Далее настраиваем iptables.
Если у Вас выделенный сервер, или виртуальный на Xen или KVM, то в консоли пишем
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Если виртуализация OpenVZ, то обычный NAT работать не будет, и надо использовать SNAT, для этого в консоли пишем
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to <b>a.b.c.d</b> iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
Вместо a.b.c.d соответственно внешний ip вашего сервера
Чтобы правила iptables применялись при загрузке ОС, пропишем их в /etc/rc.local, туда же, после применения правил iptables добавим перезагрузку dnsmasq. Пример файла /etc/rc.local после внесения изменений —
для dedicated\Xen\KVM:
#!/bin/sh -e # # [...] # iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE /etc/init.d/dnsmasq restart exit 0
для OpenVZ:
#!/bin/sh -e # # [...] # iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to <b>a.b.c.d</b> iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT /etc/init.d/dnsmasq restart exit 0
Далее настроим dnsmasq, для этого откроем файл /etc/dnsmasq.conf и раскомментируем\поправим две строки
listen-address=127.0.0.1,10.8.0.1 bind-interfaces
На этом настройка сервера закончена, можно перезапускать сервисы и начинать настраивать клиентов.
service openvpn restart service dnsmasq restart
В моем случае все клиенты были на Windows 7, поэтому расскажу только про настройки клиентов на винде.
Скачиваем софт — OpenVPN, устанавливаем, в случае с Windows 7 запускаем от имени администратора «Пуск\OpenVPN\OpenVPN Gui»
Далее создаем файл %имя%.ovpn со следующим содержимым
push "redirect-gateway def1" client dev tun proto udp remote <b>a.b.c.d</b> 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert <b>cli1.crt </b> key <b>cli1.key</b> comp-lzo verb 3
Вместо a.b.c.d — адрес сервера.
Складываем файл %имя%.ovpn и ранее полученные ca.crt cli1.crt cli1.key в C:/Programm files(x86)/OpenVPN/config
Вот и все, в трее правой мышью по значку OpenVPN -> Connect и нас переносит в другую страну.
ссылка на оригинал статьи http://habrahabr.ru/post/188474/
Добавить комментарий