Это полное руководство, протестировано и работает. Можно просто копировать-вставлять команды. Было бы здорово, если бы админы могли перенести это на страницы WIKI. Цель: Использовать клиентское соединение Mikrotik OVPN в качестве шлюза для шифрования вашей интернет-активности от посторонних глаз. Что у нас есть: Mikrotik Router (в моём случае - RB951G-2HnD v6.6) OpenVZ VPS сервис (в моём случае - BuyVM с Ubuntu 12.04 LTS Server x64) Рабочее интернет-соединение (через Mikrotik Router)
РУКОВОДСТВО: Установите Ubuntu 12.04 LTS на ваш VPS сервис и запустите его. Подключитесь к установленному серверу через SSH (например, с помощью Putty). Войдите в систему как root. Используйте командную строку:
apt-get update
apt-get dist-upgrade -y
apt-get install openvpn openssl udev
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
nano /etc/openvpn/easy-rsa/2.0/whichopensslcnf
измените:
cnf="$1/openssl.cnf"
на
cnf="$1/openssl-1.0.0.cnf"
Сохраните и выйдите.
nano /etc/openvpn/easy-rsa/2.0/vars
измените:
export EASY_RSA="`pwd`"
на
export EASY_RSA="/etc/openvpn/easy-rsa/2.0"
и
export KEY_SIZE=1024
на
export KEY_SIZE=2048
Сохраните и выйдите.
Инициализируйте центр сертификации и инфраструктуру открытых ключей (PKI), выполнив следующие команды последовательно:
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 (После выполнения последней команды (выше) вас попросят ввести некоторые значения.)
. /etc/openvpn/easy-rsa/2.0/build-key-server server
. /etc/openvpn/easy-rsa/2.0/build-key client
. /etc/openvpn/easy-rsa/2.0/build-dh
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn
cd /etc/openvpn/
nano openvpn.conf
введите:
port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.10.0.0 255.255.255.0
cipher AES-256-CBC
user nobody
group nogroup
status /var/log/openvpn-status.log
log-append /var/log/openvpn
verb 3
mute 0
max-clients 100
keepalive 10 120
persist-key
persist-tun
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push “dhcp-option DNS 8.8.4.4″
Сохраните и выйдите.
nano /etc/rc.local
введите:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -j SNAT --to-source YOUR_VPS_IP YOUR_VPS_IP — внешний IP вашего VPS
Сохраните и выйдите.
nano /etc/sysctl.conf
Удалите # с строки:
net.ipv4.ip_forward=1
Сохраните и выйдите.
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/openvpn restart
cd /etc/openvpn/easy-rsa/2.0/keys
openssl rsa -in /etc/openvpn/easy-rsa/2.0/keys/client.key -out /etc/openvpn/easy-rsa/2.0/keys/client.pem
Подключитесь к вашему серверу с помощью SFTP (например, с помощью FileZilla) и скопируйте папку /etc/openvpn/easy-rsa/2.0/keys на ваш локальный ПК. Перезагрузите установленный Ubuntu сервер. Запустите приложение WinBox на локальном ПК. Перетащите ca.crt, client.crt, client.pem с ЛОКАЛЬНОГО ПК в окно File List Mikrotik. Откройте “System → Certificates”. Импортируйте ca.crt, client.crt и client.pem. CA будет с “T”, а Client с “KT”. Закройте “Certificates” и откройте его снова, иначе вы получите ошибку на следующем шаге. Переименуйте ваши сертификаты CA и Client так, чтобы вам было легко их помнить. Откройте “PPP”. Нажмите “+” и выберите “OVPN Client”. Connect to: ВАШ_VPS_IP Port: 443 Mode: ip User: client Password: Profile: default Certificate: выберите ваш клиентский сертификат (не CA) Auth: sha1 Cipher: aes 256 Нажмите “OK”. Теперь ваше соединение OVPN должно быть активным. Если нет - вы где-то допустили ошибку раньше. Теперь вам нужно добавить правило Mangle, которое IP-адреса вы хотите предоставить доступом к VPN через Mikrotik: Перейдите в IP → “Firewall” → вкладку “Mangle”, выберите “Add new”. В “Chain” выберите “prerouting”. В “Src. Adress” введите IP или диапазон IP, к которому вы хотите предоставить доступ через VPN. В “Action” выберите “mark routing”. В “New Routing Mark” введите любое имя для routing mark, например “OVPN”. Отметьте Passthrough. Нажмите “OK”. Далее вам нужно добавить маршруты для нового VPN-соединения: Перейдите в “IP” и затем в “Routes” и “Add New”. Dst. Address: должен быть “0.0.0.0/0”. Gateway: Сюда введите имя созданного вами VPN-соединения, например “OVPN”. Routing Mark: выберите созданный вами routing mark (OVPN). Нажмите “OK”. Добавьте Masquerade для этого OpenVPN-соединения: Теперь, пожалуйста, перейдите во вкладку “IP” и выберите “Firewall” и “NAT”. В “Chain” выберите “srcnat”, и установите флажок “Enabled”. В “Out. Interface” выберите имя только что созданного вами OpenVPN-соединения и установите флажок. В “Action” выберите “Masquerade”. Нажмите “OK”. Если у вас есть firewall — вам нужно принять 443 TCP порт на out OVPN интерфейсе в chain “Output” и все порты на out OVPN интерфейсе в chain “Forward”.
Это все. Если вы выполнили все шаги, все устройства с IP-адресами или диапазонами IP, которые вы вводите в правило Mangle, будут перенаправляться через ваш OVPN-туннель. Внешний IP будет таким же, как YOUR_VPS_IP. Надеюсь, вам это понравится. Если у вас есть какие-либо предложения, исправления или вопросы - пожалуйста, напишите в этой теме.
© Enot
РУКОВОДСТВО: Установите Ubuntu 12.04 LTS на ваш VPS сервис и запустите его. Подключитесь к установленному серверу через SSH (например, с помощью Putty). Войдите в систему как root. Используйте командную строку:
apt-get update
apt-get dist-upgrade -y
apt-get install openvpn openssl udev
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
nano /etc/openvpn/easy-rsa/2.0/whichopensslcnf
измените:
cnf="$1/openssl.cnf"
на
cnf="$1/openssl-1.0.0.cnf"
Сохраните и выйдите.
nano /etc/openvpn/easy-rsa/2.0/vars
измените:
export EASY_RSA="`pwd`"
на
export EASY_RSA="/etc/openvpn/easy-rsa/2.0"
и
export KEY_SIZE=1024
на
export KEY_SIZE=2048
Сохраните и выйдите.
Инициализируйте центр сертификации и инфраструктуру открытых ключей (PKI), выполнив следующие команды последовательно:
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 (После выполнения последней команды (выше) вас попросят ввести некоторые значения.)
. /etc/openvpn/easy-rsa/2.0/build-key-server server
. /etc/openvpn/easy-rsa/2.0/build-key client
. /etc/openvpn/easy-rsa/2.0/build-dh
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn
cd /etc/openvpn/
nano openvpn.conf
введите:
port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.10.0.0 255.255.255.0
cipher AES-256-CBC
user nobody
group nogroup
status /var/log/openvpn-status.log
log-append /var/log/openvpn
verb 3
mute 0
max-clients 100
keepalive 10 120
persist-key
persist-tun
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push “dhcp-option DNS 8.8.4.4″
Сохраните и выйдите.
nano /etc/rc.local
введите:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -j SNAT --to-source YOUR_VPS_IP YOUR_VPS_IP — внешний IP вашего VPS
Сохраните и выйдите.
nano /etc/sysctl.conf
Удалите # с строки:
net.ipv4.ip_forward=1
Сохраните и выйдите.
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/openvpn restart
cd /etc/openvpn/easy-rsa/2.0/keys
openssl rsa -in /etc/openvpn/easy-rsa/2.0/keys/client.key -out /etc/openvpn/easy-rsa/2.0/keys/client.pem
Подключитесь к вашему серверу с помощью SFTP (например, с помощью FileZilla) и скопируйте папку /etc/openvpn/easy-rsa/2.0/keys на ваш локальный ПК. Перезагрузите установленный Ubuntu сервер. Запустите приложение WinBox на локальном ПК. Перетащите ca.crt, client.crt, client.pem с ЛОКАЛЬНОГО ПК в окно File List Mikrotik. Откройте “System → Certificates”. Импортируйте ca.crt, client.crt и client.pem. CA будет с “T”, а Client с “KT”. Закройте “Certificates” и откройте его снова, иначе вы получите ошибку на следующем шаге. Переименуйте ваши сертификаты CA и Client так, чтобы вам было легко их помнить. Откройте “PPP”. Нажмите “+” и выберите “OVPN Client”. Connect to: ВАШ_VPS_IP Port: 443 Mode: ip User: client Password: Profile: default Certificate: выберите ваш клиентский сертификат (не CA) Auth: sha1 Cipher: aes 256 Нажмите “OK”. Теперь ваше соединение OVPN должно быть активным. Если нет - вы где-то допустили ошибку раньше. Теперь вам нужно добавить правило Mangle, которое IP-адреса вы хотите предоставить доступом к VPN через Mikrotik: Перейдите в IP → “Firewall” → вкладку “Mangle”, выберите “Add new”. В “Chain” выберите “prerouting”. В “Src. Adress” введите IP или диапазон IP, к которому вы хотите предоставить доступ через VPN. В “Action” выберите “mark routing”. В “New Routing Mark” введите любое имя для routing mark, например “OVPN”. Отметьте Passthrough. Нажмите “OK”. Далее вам нужно добавить маршруты для нового VPN-соединения: Перейдите в “IP” и затем в “Routes” и “Add New”. Dst. Address: должен быть “0.0.0.0/0”. Gateway: Сюда введите имя созданного вами VPN-соединения, например “OVPN”. Routing Mark: выберите созданный вами routing mark (OVPN). Нажмите “OK”. Добавьте Masquerade для этого OpenVPN-соединения: Теперь, пожалуйста, перейдите во вкладку “IP” и выберите “Firewall” и “NAT”. В “Chain” выберите “srcnat”, и установите флажок “Enabled”. В “Out. Interface” выберите имя только что созданного вами OpenVPN-соединения и установите флажок. В “Action” выберите “Masquerade”. Нажмите “OK”. Если у вас есть firewall — вам нужно принять 443 TCP порт на out OVPN интерфейсе в chain “Output” и все порты на out OVPN интерфейсе в chain “Forward”.
Это все. Если вы выполнили все шаги, все устройства с IP-адресами или диапазонами IP, которые вы вводите в правило Mangle, будут перенаправляться через ваш OVPN-туннель. Внешний IP будет таким же, как YOUR_VPS_IP. Надеюсь, вам это понравится. Если у вас есть какие-либо предложения, исправления или вопросы - пожалуйста, напишите в этой теме.
© Enot
