Installing the OpenVPN server
First we're going to install the OpenVPN:Установим OpenVPN:
apt-get update && apt-get install -y openvpn
Preparing certificate files
Copying example RSA files so the originals remain untouched:Копируем файлы сертификатов (или что оно там такое) чтобы исходники оставались нетронутыми:
mkdir /etc/openvpn/easy-rsa && cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
Editing the vars
file:Отредактируем файл с переменными
vars
:
vi /etc/openvpn/easy-rsa/vars
Default values:Значения по-умолчанию:
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@example.com"
Creating directory for keys:Создаем папку для будущих ключей:
mkdir /etc/openvpn/easy-rsa/keys
cat /dev/null > /etc/openvpn/easy-rsa/keys/index.txt && echo "00">/etc/openvpn/easy-rsa/keys/serial
Entering the working directory, reading the vars
file and starting generating a key file for the server server1
:Заходим в рабочую папку, считываем в окружение файл с переменными и начинаем генерацию сертификатов для сервера
server1
:
cd /etc/openvpn/easy-rsa && chmod 700 ./vars && . ./vars && ./build-ca && ./build-key-server server1
Now generating certificates for a client client1
:Генерируем сертификаты для клиента
client1
:
./build-key client1
Создаем параметры Диффи-Хеллмана:
./build-dh
Configuring the OpenVPN server
Copying sample OpenVPN config file to a working one:Создаем рабочий конфиг OpenVPN копируя его из файла-образца:
gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf
Editing:Редактируем:
vi /etc/openvpn/server.conf
- Certificates path:
Пути к файлам сертификатов:ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server1.crt
key /etc/openvpn/easy-rsa/keys/server1.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem - Turn TCP mode on:
Включаем TCP вместо UDP:;proto udp proto tcp - Uncomment the following lines:
Раскомментируйте следующие строки:push "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 208.67.222.222"This will enable routing of all your traffic through the VPN server i.e. your public IP will be same as the assigned to VPS one.
Именно эти параметры перенаправят весь ваш траффик через сервер, в результате вашим публичным IP станет адрес VDS сервера, а реальный IP будет скрыт.
P.S. Чтобы посмотреть ваш конфиг без комментариев, наберите:
egrep -v "^$|^#|^;" /etc/openvpn/server.conf
Here's my working server config example:К примеру, вот как настроен у меня OpenVPN сервер:
port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server1.crt
key /etc/openvpn/easy-rsa/keys/server1.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 5
Activate the tunnel
You may need to ask your VPS provider to enable it for you first, otherwise you're likely to get the following error:ovpn-server[3740]: Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
ovpn-server[3740]: Note: Attempting fallback to kernel 2.2 TUN/TAP interface
ovpn-server[3740]: Cannot allocate TUN/TAP dev dynamically
Fixing the error:
mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 600 /dev/net/tun
Checking whether everything's fine:
cat /dev/net/tun
Should return:
cat: /dev/net/tun: File descriptor in bad state
IP forwarding
Now set up the IP forwarding on your server:Настроим IP forwarding на нашем сервере:
echo "1" > /proc/sys/net/ipv4/ip_forward
Flushing iptables
NAT rules:Сбрасываем настройки
iptables
для NAT:
iptables -F -t nat
Allow IP forwarding with iptables
:Разрешим перенаправление в фаерволле
iptables
:
- For OpenVZ VPS users:
Если у вас VDS, работающий по технологии OpenVZ:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source %VPS_PUBLIC_IP% - On normal servers:
На полноценном сервере:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEOn OpenVZ VPS that command would return:
На OpenVZ'шном виртуальном сервере эта команда вернет ошибку:iptables: No chain/target/match by that nameBTW: change eth0 to your actual device name (can be seen via ifconfig)!
iptables
NAT configuration:Проверяем и сохраняем настройку
iptables
для NAT:
iptables -L -t nat && iptables-save
Sample output of iptables -L -t nat
:
Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.8.0.0/24 anywhere to:%VPS_PUBLIC_IP% Chain OUTPUT (policy ACCEPT) target prot opt source destination
Finishing the installation
Start OpenVPN:Запустим OpenVPN:
/etc/init.d/openvpn start
Setting up the OpenVPN client
Download OpenVPN Portable:
Скачайте портативную версию OpenVPN:
sourceforge.net/projects/ovpnp/
Sample client config file:
Образец конфигурационного файла для клиента:
openvpn.net/index.php/open-source/documentation/howto.html#client
;proto udp
proto tcp
Here's my working client config example:
client
pull
dev tun
proto tcp
remote %VPS_PUBLIC_IP% 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
keepalive 5 28
route-delay 3
win-sys env
What is your IP?
whatismyip?Sources:
- http://openvpn.net/index.php/open-source/documentation/howto.html
- debuntu.ru/nastraivaem-openvpn-server-debian-50-na-podklyucheniya-klientov
- sudouser.com/ustanovka-i-nastrojka-open-vpn-servera-na-debian-i-ubuntu.html
- alan9550.blogspot.com/2011/05/openvpn-debiansqueeze.html
- netlly.ru/index.php?option=com_content&view=article&id=21&Itemid=28
- ubuntuforums.org/showthread.php?t=1795535
No comments:
Post a Comment