Решил накатать статью по поднятию OpenVPN на VDS/VPS и вот что получилось: Почему именно на VDS/VPS? Это самый доступный на сегодняшний день хостинг с неограничеными возможностями и недорогой (купить VPN дороже раза в 2, хоть в покупке и есть свои плюси и довольно таки немалые, но не об этом тема). Поехали: 1. Выбираем хостера с VDS/VPS. Я рекомендую FirstVDS , поскольку у них поставил не один OpenVPN, да и привык к ним как-то 2. Регистрируемся. ОС выбираем CentOS ибо на нем лучше всего делать VPN 3. Для фёрста просим сразу же активировать TUN и NAT (пишем в билинге что-то типа Активизируйте, пожалуйста, TUN/TAP-устройства для сервера {IP вашего сервера}, а так же включите NAT). Для других хостеров может быть не актуально, поскольку это все может быть включено, но скорей всего - нет 4. Лезем через ssh на сервак. Редактируем /etc/yum.conf. Ищем строчку plugins=1. Если стоит 0 то все нормально, если нет то правим. 5. Коммандуем Code: # yum install openvpn Соглашаемся на установку. Если же послали куда подальше, то либо не выполнили пункт 4, если не помогло то меняем репозиторий юма 6. Ну вот поставили... Теперь создаем конфигурационные файлы Code: # touch /etc/openvpn/openvpn.conf # mkdir /etc/openvpn/ccd # mkdir /etc/openvpn/keys # cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa/ /etc/openvpn/ # cp /usr/share/doc/openvpn-2.0.9/easy-rsa/openssl.cnf /etc/openvpn # cd /etc/openvpn/easy-rsa # chmod +x clean-all # chmod +x build* 7. Редактируем /etc/openvpn/easy-rsa/vars Code: export KEY_COUNTRY=RU export KEY_PROVINCE=MSK export KEY_CITY=MOSCOW export KEY_ORG="OpenVPN-TEST-INSTALLATION" export KEY_EMAIL="[email protected]" 8. Создаем ключи Code: # cd /etc/openvpn/easy-rsa # . ./vars # ./clean-all Будут спрашивать данные для сертификата, лучше отвечать ближе к правде, хотя и не обязательно: Code: # ./build-ca Аналогично, отвечать нужно на все вопросы. Common name должно быть server. На 2 вопроса отвечать y: Code: # ./build-key-server server Создаем ключ шифрования: Code: # ./build-dh Создаем клиентский сертификат. Если у нас несколько клиентов, то повторяем этот шаг несколько раз, меняя номер клиента. В Common name указываем то же самое что и в параметре запроса (client1 - прим.): Code: # ./build-key client1 9. Топаем в /etc/openvpn. И радактируем конфиг openvpn.conf. Итак!!! То чего все так долго ждали!!! Рабочий конфиг сервера Code: port указываем нужным нам порт proto tcp dev tun local указываем внешний айпишник сервера ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 10.8.0.1" push "redirect-gateway def1" push "dhcp-option DNS 10.8.0.1" push "dhcp-option WINS 10.8.0.1" keepalive 10 320 tun-mtu 1500 comp-lzo user nobody max-clients 10 client-to-client group nobody persist-key persist-tun mssfix 1450 status /etc/openvpn/openvpn-status.log log /etc/openvpn/openvpn.log verb 4 Если нужно в ручную указывать айпишник для клиента то редактируем файл ipp.txt в директории /etc/openvpn на клиента строчку следующего вида: client1,10.8.0.4 10. Прокидываем нат для выхода на внешку: Code: # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE На VPS на базе Virtuozzo вместо первой команды надо выполнить (если не знаете че за хуета то устанавливаем опытным путем... не соединяется со страницами - значит эта хрень стоит ): Code: # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source IP_АДРЕС_ВАШЕГО_ВДС Выполнять нужно либо ту, либо эту комманду... хотя ниче не будет если обе выполнтие... После чего чтоб все вступило в силу выполняем: Code: # echo 1 > /proc/sys/net/ipv4/ip_forward 11. Запускаем openvpn Code: # service openvpn start Либо Code: # /etc/init.d/openvpn start Разницы нет. Если все нормально сделали то выдаст OK 12. Сервак настроили. Теперь настраиваем клиента. Описывать не буду как че делать - выложу один конфиг и какие ключи слить надо. Итак сливаем файлы ca.crt, client01.crt, client01.key (все находятся в /etc/openvpn/easy-rsa/keys). А вот и конфиг клиента для OpenVPN : Code: client port указываем порт на котором работаем dev tun proto tcp remote сервак порт resolv-retry infinite nobind route-method exe route-delay 2 persist-key persist-tun mute-replay-warnings ca "ca.crt" cert "client2.crt" key "client2.key" ping 15 ping-restart 45 ping-timer-rem tun-mtu 1500 ifconfig 10.8.0.4 255.255.255.0 dhcp-option DNS 10.8.0.1 dhcp-option WINS 10.8.0.1 comp-lzo ns-cert-type server cipher BF-CBC verb 4 mute 20 Все... цепляемся и радуемся. Если происходит ситуация, что при загрузке страниц висит ожидание открытия страницы... короче сервак найден, но страницы не грузит то меняем значение mtu (строка tun-mtu) в конфигах как сервака (после изменений перезагрузить не забудьте коммандой service openvpn restart) так и клиента на меньшее зчение, например на 1000. У меня именно такая ситуация была, поскольку сетевое оборудование передавало пакеты меньше 1500, поставив 1000 - я избавился от геммороя ) Кому интересно что такое MTU читайте документацию и учите матанализ
Хорошая статья. Для новичков в nix'a=). P.S Не значительная опечатка 11. Запускаем openvpn Код: # servie openvpn start Должно быть service.
Извиняюсь за глупый вопрос) но не радует строчка и что нужно прописать, чтобы никакого логирования не было
Банальное отключение... log /dev/null status /dev/null log-append /dev/null verb 0 Все логи отправляются в пустоту... Если откомментировать то логи пишутся по умолчанию. Поэтому вот так.
Спасибо за статью. было бы так же полезно узнать как вообще отлючить любое логирование на сервере. что бы ни ссш, фтп, никаких логов не велось.
Если у меня предпологаетса при каждом перезапуске сервера изменение ip можно ли в качестве ип указать 0.0.0.0?
Ну так это для примера Смысл? на уровне датацентра ведется все Лучше вообще не указывать этот параметр.
Не понимаю как через SSH редактировать /etc/yum.conf. На четвертом шаге уже ругается. D: АПД Нашел. Но уже пишет мол отсутствует фаил на сервере.
Ууу батенька... с такими познаниями консоли - вам азам линукса надо бы обучаться, а не впн ставить миднайт коммандер поставь для начала
на шаге номер 6 испытал затруднения. У ТС есть такие команды: У меня Linux SentOS 5.3, при команде # yum install openvpn скачивает версию не как у ТС, openvpn-2.0.9 а более новую openvpn-2.2.2 Логично будет предположить что номера openvpn в командах что выше нужно просто заменить с openvpn-2.0.9 на openvpn-2.2.2 При замене номера верисии на 2.2.2. Первая команда проходит с успехом, а вот вторая нет получаем ответ и где брать не достающий файл?
вот что имеем PHP: # cd /usr/share/doc/openvpn-2.2.2/easy-rsa # ls 1.0 2.0 Windows # cd 2.0 # ls build-ca build-key-server Makefile revoke-full build-dh build-req openssl-0.9.6.cnf sign-req build-inter build-req-pass openssl-0.9.8.cnf vars build-key clean-all openssl-1.0.0.cnf whichopensslcnf build-key-pass inherit-inter pkitool build-key-pkcs12 list-crl README Называется бери что хочешь... аж три файла openssl