Собственный OpenVPN сервер – это просто!
VPN (Virtual Private Network – виртуальная частная сеть) – это логическая сеть, которая создается поверх какой-либо другой сети. VPN гарантирует анонимность и безопасность при работе через интернет, обеспечивая защиту от перехвата трафика, за счет его полного шифрования. В последнее время в сети все чаще стали появляться всевозможные сайты, продающие vpn доступ на их серверах расположенных в разных странах. Воспользовавшись услугами одного из таких VPN–провайдеров, через некоторое время обнаружил, что IP адрес сервера находится во всевозможных блэклистах, разве что заказного убийства за ним не числится.
Выбрав СЕБЯ в качестве vpn провайдера, вы получаете ряд преимуществ в сравнении с использованием публичных сервисов которые не могут гарантировать того что данные о вас не уйдут третьим лицам, да и вообще, черт его знает как у них все работает, и не становитесь ли вы сами жертвой используя чей то VPN?
Итак, речь пойдет о том, как легко и просто настроить свой собственный OpenVPN сервер.
- Первое что нам потребуется, сервер с Fedora 12 на борту, можно VDS (Главное не дома иначе теряется весь смысл).
- Второе это SSH или KVM доступ к серверу.
- Третье, вам необходимо знать, как работать с любым консольным редактором, например vi.
Установим необходимые пакеты, если они не установлены:
su -c "yum install -y iptables openvpn"
Скопируем необходимые файлы:
cp -R /usr/share/openvpn/easy-rsa/2.0/* /tmp/
cd /tmp/
chmod +rwx *
Отредактируйте vars:
vi ./vars
Нас интересуют:
export KEY_SIZE=2048 #Размер ключа шифрования, рекомендую поставить 2048бит и больше.Отредактируйте с вашими параметрами
export KEY_COUNTRY="RU"
export KEY_PROVINCE="NA"
export KEY_CITY="Moscow"
export KEY_ORG="VPN Company"
export KEY_EMAIL="my@mail.com"
И приступим к созданию сертификатов:
source ./vars
./clean-all
На все вопросы визарда можно пропускать, нажимая Enter или отвечать на ваше усмотрение.
./build-ca
./build-key-server vpnserver
./build-dh этот шаг займет какое-то время, придется подождать
И еще один:
openvpn –genkey –secret ta.key
Скопируем ключи:
cp keys/{ca.crt,ca.key,vpnserver.crt,vpnserver.key,dh2048.pem,ta.key} /etc/openvpn/
Создадим файл конфигурации
vi /etc/openvpn/server.conf
следующего содержания
mode server
client-to-client #Позволяет клиентам "видеть" друг друга. Если в этом нет необходимости, просто удалите эту строчку.
port 1194
proto udp
dev tun
ca ca.crt
cert vpserver.crt
key vpnserver.key
dh dh2048.pem
server 10.5.5.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 3 20
comp-lzo
user nobody
tls-auth ta.key 0
tls-cipher DHE-RSA-AES256-SHA #О доступных вариантах шифра см. ниже
cipher AES-256-CBC #~
group nobody
persist-key
persist-tun
log "/var/log/openvpn.log" #укажите /dev/null если хотите отключить логирование.
status "/var/log/openvpn_status.log"
verb 0
mute 20
local 123.245.167.89 #Необходимо указать внешний IP адрес сервера
push "redirect-gateway"
# В качестве DNS используем OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Запускаем:
service openvpn start
Пропишем правила iptables:
service iptables start
iptables -A INPUT -i eth0 -p udp –dport 1194 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp –dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.5.5.0/24 -o eth0 -j MASQUERADE
Сохраняем и перезапускаем:
/etc/init.d/iptables save
/etc/init.d/iptables restart
Пропишем в автозагрузку. (Стоит учесть, что в Fedora 12 вам в качестве службы, отвечающей за сеть, необходимо выбрать network, а не NetworkManager):
chkconfig iptables on
chkconfig openvpn on
Клиенты:
Для того чтобы создать ключи для клиентов:
./build-key vpnclient
В качестве client нужно указывать имена пользователей или то, что вам взбредет в голову.
На этом все, можно перезапускать сервер.
shutdown -r 5
Файл конфигурации для клиента config.ovpn:
script-security 2
client
dev tun
proto udp
remote 123.245.167.89
port 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
tls-cipher DHE-RSA-AES256-SHA #О доступных вариантах шифра см. ниже
cipher AES-256-CBC
ns-cert-type server
redirect-gateway
comp-lzo
verb 2
ping 10
ping-restart 60
ca.crt,ta.key (Одинаковые для всех клиентов и сервера),vpnclient.crt,vpnclient.key (Уникальные для каждого клиента), config.ovpn
Файлы необходимые клиенту для подключения. Поместить в папку C:\Program Files\OpenVPN\config для Windows. Для Linux подключение можно осуществить через терминал
su -c 'openvpn client.ovpn'
Варианты TLS-ciphers:
| dhe-rsa-aes256-sha | psk-aes128-cbc-sha | krb5-des-cbc3-sha | exp-edh-rsa-des-cbc-sha |
| dhe-dss-aes256-sha | rc4-sha | krb5-des-cbc3-md5 | exp-edh-dss-des-cbc-sha |
| dhe-rsa-camellia256-sha | rc4-md5 | dhe-rsa-aes128-sha | exp-des-cbc-sha |
| dhe-dss-camellia256-sha | psk-rc4-sha | dhe-dss-aes128-sha | exp-rc2-cbc-md5 |
| aes256-sha | krb5-rc4-sha | dhe-rsa-seed-sha | exp-krb5-rc2-cbc-sha |
| camellia256-sha | krb5-rc4-md5 | dhe-dss-seed-sha | exp-krb5-des-cbc-sha |
| psk-aes256-cbc-sha | edh-rsa-des-cbc-sha | dhe-rsa-camellia128-sha | exp-krb5-rc2-cbc-md5 |
| edh-rsa-des-cbc3-sha | edh-dss-des-cbc-sha | dhe-dss-camellia128-sha | exp-krb5-des-cbc-md5 |
| edh-dss-des-cbc3-sha | des-cbc-sha | aes128-sha | exp-rc4-md5 |
| des-cbc3-sha | krb5-des-cbc-sha | seed-sha | exp-krb5-rc4-sha |
| psk-3des-ede-cbc-sha | krb5-des-cbc-md5 | camellia128-sha | exp-krb5-rc4-md5 |
Варианты Ciphers:
| aes-128-cbc | aes-128-ecb | aes-192-cbc | aes-192-ecb | aes-256-cbc |
| aes-256-ecb | base64 | bf | bf-cbc | bf-cfb |
| bf-ecb | bf-ofb | cast | cast-cbc | cast5-cbc |
| cast5-cfb | cast5-ecb | cast5-ofb | des | des-cbc |
| des-cfb | des-ecb | des-ede | des-ede-cbc | des-ede-cfb |
| des-ede-ofb | des-ede3 | des-ede3-cbc | des-ede3-cfb | des-ede3-ofb |
| des-ofb | des3 | desx | rc2 | rc2-40-cbc |
| rc2-64-cbc | rc2-cbc | rc2-cfb | rc2-ecb | rc2-ofb |
| rc4 | rc4-40 |
Благодарю за отличный мануал! Как сделать так чтобы при разрыве связи с vpn, все коннекты блокировались? Моя ОS – Fedora 11