Це стара версія документу!
sudo apt-get install openvpn
Чтобы организовать защищённое подключение, нужно сгенерировать секретный ключ доступа:
# openvpn --genkey --secret static.key
Для связи одного компьютера с сервером (интерфейс TUN):
sudo openvpn --secret /etc/openvpn/static.key --proto tcp-server --lport 1194 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
Для организации некоторой подсети с возможностью подключения нескольких компьютеров к серверу (интерфейс TAP):
sudo openvpn --secret /etc/openvpn/static.key --proto tcp-server --lport 1194 --dev tap1 --ifconfig 10.9.8.1 255.255.255.0
Если планируется подключаться к серверу только через SSH-тоннель (либо через SSLH), то нужно добавить к параметрам IP-адрес, к которому будет прикреплён сервер:
sudo openvpn --secret /etc/openvpn/static.key --proto tcp-server --local 127.0.0.1 --lport 1194 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
или
sudo openvpn --secret /etc/openvpn/static.key --proto tcp-server --local 127.0.0.1 --lport 1194 --dev tap1 --ifconfig 10.9.8.1 255.255.255.0
Это позволит объединить сервер и подключившийся к нему компьютер в одну локальную сеть, однако ещё не даёт доступа подключённому компьютеру в интернет. Чтобы получить выход в интернет через такой сервер, на нём нужно включить NAT:
# echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -A FORWARD -i <NET_IF> -o tun1 -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A FORWARD -s 10.9.8.0/24 -o <NET_IF> -j ACCEPT # iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -o <NET_IF> -j SNAT --to <SERVER_IP>
Следует заменить tun1
на tap1
в случае TAP-подключения.
<NET_IF>
– это “внешний” сетевой интерфейс сервера (через который осуществляется доступ в Интернет).
<SERVER_IP>
– это IP-адрес сервера на внешнем сетевом интерфейсе.
Для начала нужно скопировать секретный ключ доступа, сгенерированный на сервере, к себе на компьютер. Расположить его можно в /etc/openvpn/static.key
, как и на сервере.
sudo openvpn --proto tcp-client --remote <SERVER_IP> <SERVER_PORT> --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
или
sudo openvpn --proto tcp-client --remote <SERVER_IP> <SERVER_PORT> --dev tap1 --ifconfig 10.9.8.2 255.255.255.0
sudo openvpn --proto tcp-client --remote <SERVER_IP> <SERVER_PORT> --http-proxy <PROXY> <PROXY_PORT> --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
или
sudo openvpn --proto tcp-client --remote <SERVER_IP> <SERVER_PORT> --http-proxy <PROXY> <PROXY_PORT> --dev tap1 --ifconfig 10.9.8.2 255.255.255.0
ssh -f -N -L5611:localhost:1194 -p <SERVER_SSH_PORT> <SERVER_IP> sudo openvpn --proto tcp-client --secret /etc/openvpn/static.key --remote localhost 5611 --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
или
sudo openvpn --proto tcp-client --secret /etc/openvpn/static.key --remote localhost 5611 --dev tap1 --ifconfig 10.9.8.2 255.255.255.0
sudo route del default sudo route add default gw 10.9.8.1
Чтобы сохранить доступ к DNS-серверам своего провайдера (на всякий случай):
sudo route add <DNS1_IP> eth0 sudo route add <DNS2_IP> eth0
Доступ к прокси-серверу, если он есть, обязательно нужно сохранить:
sudo route add <PROXY_IP> eth0
Чтобы использовать DNS-серверы, отличные от предоставленных провайдером, можно изменить файл
nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 4.2.2.1 nameserver 4.2.2.2