Skip to main content

Настройка VPN через SSH туннель под OpenVZ

Для настройки VPN туннеля по SSH подключению до контейнера, который находится под управлением OpenVZ нужно сделать две вещи.

Во первых нужно добавить в контейнер символьное устройство TUN/TAP, с помощью которого будет осуществляться туннелирование. Для этого со стороны админа OpenVZ надо выполнить

modprobe tun
vzctl set 101 --devices c:10:200:rw --save
vzctl set 101 --capability net_admin:on --save

где 101 — это номер нужного виртуального окружения.
В контейнере надо создать соотвествующее символьное устройство:

mkdir /dev/net
mknod /dev/net/tun c 10 200


Далее идет собственно настройка туннеля между клиентом и сервером:

     On the client:
 
           ssh -f -w 0:1 192.168.1.15 true
           ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
           route add 10.0.99.0/24 10.1.1.2
 
     On the server:
 
           ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
           route add 10.0.50.0/24 10.1.1.1

Либо можно сделать автоматическую настройку, как описано в вики Ubuntu

Automating it all with ifup/down
 
At this point, we have successfully created a virtual private network using SSH 4.3 tunnels. Can we automate this process with ifup/down? The answer is: yes! 
 
Machine A: 
 iface tun0 inet static
        pre-up sleep 5
        address 10.0.0.100
        pointopoint 10.0.0.200
        netmask 255.255.255.0
        up arp -sD 10.0.0.200 eth0 pub
 
Machine B: 
 iface tun0 inet static
        pre-up ssh -f -w 0:0 1.2.3.4 'ifdown tun0; ifup tun0'
        pre-up sleep 5
        address 10.0.0.200
        pointopoint 10.0.0.100
        netmask 255.255.255.0
        up ip route add 10.0.0.0/24 via 10.0.0.200
        up ip route add 1.2.3.4/32 via 192.168.0.1
        up ip route replace default via 10.0.0.1
        down ip route replace default via 192.168.0.1
        down ip route del 10.0.0.0/24 via 10.0.0.200
        down ip rout edel 1.2.3.4/32 via 192.168.0.1