Главная > Unix ToolBox > Перевод сборника команд Unix ToolBox. Раздел 6. VPN With SSH (VPN через SSH)

Перевод сборника команд Unix ToolBox. Раздел 6. VPN With SSH (VPN через SSH)

VPN через SSH

С версии 4.3, OpenSSH поддерживает устройства tun/tap, позволяющие создавать шифрованный туннель, что может быть весьма полезно в случае удаленного администрирования. Это очень похоже на OpenVPN, основанный на TLS. Плюс протокола SSH в том, что для реализации не нужно устанавливать и настраивать дополнительный софт. Из минусов, низкая производительность на медленных линиях.

Шифрованный туннель создается на основе одного TCP соединения, что весьма удобно, для быстрого поднятия простого VPN, на IP.

В конфигурационном файле sshd_conf, должны стоять следующие опции:

    PermitRootLogin yes
    PermitTunnel yes 


Одно P2P (peer to peer — точка точка) соединение

Попробуем соединить два хоста p2p_client и p2p_server. Соединение инициирует p2p_client к p2p_server, при этом он должен обладать правами root. Конечные адреса туннеля 10.0.0.1 (сервер) и 10.0.0.2 (клиент), кроме того мы создаем устройство tun5 ( номер может быть любым ). Вся процедура проста:

* Подключиться по SSH используя опцию -w
* Сконфигурировать IP адреса туннеля, ssh сервер — ssh клиент

Конфигурация SSH сервера

Подключение инициирует ssh клиент, все команды выполняются на сервере.

Сервер на Linux

cli># ssh -w5:5 root@p2p_server
srv># ifconfig tun5 10.0.1.1 netmask 255.255.255.252   # Выполняется в оболочке сервера

Сервер на FreeBSD

cliуте# ssh -w5:5 root@p2p_server
sуrvук# ifconfig tun5 10.0.1.1 10.0.1.2                  # Выполняется в системной оболочке сервера

Конфигурирование SSH клиента

Команды выполняемые на ssh клиенте:

cli># ifconfig tun5 10.0.1.2 netmask 255.255.255.252   # SSH клиент на Linux
cli># ifconfig tun5 10.0.1.2 10.0.1.1                  # SSH клиент на FreeBSD

Теперь хосты соединены и могут обмениваться информацией, используя IP адреса туннеля.
Соединение двух сетей

Более полезная возможность SSH, соединение двух сетей, используя два шлюза. Предположим, есть две сети, сеть А с адресом 192.168.51.0/24 и сеть Б с адресом 192.168.16.0/24. Процедура идентична вышеописанной, за исключением того, что нужно будет добавить маршрут.
192.168.51.0/24 (сеть A)|шлюз A <-> шлюз Б|192.168.16.0/24 (сеть Б)

* Подключится через SSH с опцией -w.
* Настройка IP адреса SSH туннеля, делается единожды, на сервере и на клиенте.
* Добавить маршрут для обоих сетей.
* Если нужно, включить NAT на внутреннем интерфейсе шлюза.

Подключение из сети А к сети сети Б

Соединение начинается со шлюза А, команды выполняются на шлюзе Б.

шлюз Б на Linux

gateA># ssh -w5:5 root@gateB
gateB># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # Выполняется в оболочке шлюза Б
gateB># route add -net 192.168.51.0 netmask 255.255.255.0 dev tun5
gateB># echo 1 > /proc/sys/net/ipv4/ip_forward        # Необходимо только если шлюз не Default Gateway
gateB># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

шлюз Б на FreeBSD

gateA># ssh -w5:5 root@gateB                          # Создаем устройство tun5
gateB># ifconfig tun5 10.0.1.1 10.0.1.2               # Выполняется на шлюзе Б
gateB># route add 192.168.51.0/24 10.0.1.2
gateB># sysctl net.inet.ip.forwarding=1               # Необходимо только если шлюз не Default Gateway
gateB># natd -s -m -u -dynamic -n fxp0                # Смотри NAT
gateA># sysctl net.inet.ip.fw.enable=1

Настройка шлюза А

Команды выполняемые на шлюзе А:

шлюз A на Linux

gateA># ifconfig tun5 10.0.1.2 netmask 255.255.255.252
gateA># route add -net 192.168.16.0 netmask 255.255.255.0 dev tun5
gateA># echo 1 > /proc/sys/net/ipv4/ip_forward
gateA># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

шлюз A на FreeBSD

gateA># ifconfig tun5 10.0.1.2 10.0.1.1
gateA># route add 192.168.16.0/24 10.0.1.2
gateA># sysctl net.inet.ip.forwarding=1
gateA># natd -s -m -u -dynamic -n fxp0                
gateA># sysctl net.inet.ip.fw.enable=1

В итоге имеет две частные сети, прозрачно соединенные через SSH VPN. Перенаправление IP и настройки NAT необходимы только если шлюзы не являются шлюзами по умолчанию (в этом случае клиент не будет знать, куда пересылать ответы).

Categories: Unix ToolBox Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.