Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с доступом в Интернет означает, что вы можете создать свой собственный VPN-сервис, не потратив ни копейки. Основная идея заключается в подключении к удаленному компьютеру в определенной сети и передаче всего сетевого трафика локально в эту сеть. Сегодня изучим как как создать собственный VPN-сервис.
Предварительная подготовка
Все, что вам нужно, это root-доступ к обоим компьютерам. Вы должны установить SSH-сервер на удаленный компьютер. Конечно, вам также понадобится SSH-клиент. Вам нужно будет выполнить некоторые настройки как на локальном, так и на удаленном компьютерах. Я использую KDE, поэтому я использую NetworkManager для выполнения необходимых мне настроек, но я также могу сделать обратное. Использование NetworkManager упрощает задачу.
VPN
Все, что вам нужно, это root-доступ к обоим компьютерам. Вы должны установить SSH-сервер на удаленный компьютер. Конечно, вам также понадобится SSH-клиент. Вам нужно будет выполнить некоторые настройки как на локальном, так и на удаленном компьютерах. Я использую KDE, поэтому я использую NetworkManager для выполнения необходимых мне настроек, но я также могу сделать обратное. Использование NetworkManager упрощает задачу.
Есть некоторые специальные настройки, которые необходимо выполнить на сервере, но, скорее всего, они уже сделаны на. Поэтому файл /etc/ssh/sshd_config должен содержать строку PermitTunnel=yes. Кроме того, вам может потребоваться установить для параметра AllowTCPForwarding значение «yes
». Брандмауэр также может потребовать некоторой настройки. А пока инструкция по настройке плагина NetworkManager пригодится даже тем, кто программой не пользуется.
Настройки на стороне клиента
Если вы используете NetworkManager, вам понадобится соответствующий плагин. Для Neon и других дистрибутивов на базе Debian подойдет пакет network-manager-ssh. Это все, что вам нужно. Если вы не хотите использовать NetworkManager, вы можете использовать следующую команду, предоставленную автором плагина:
ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@YOUR_SSH_SERVER \ '/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && \ /sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1
Здесь нам нужен root-доступ к обеим системам, потому что мы создаем туннели. Даже с плагинами это может вызвать несколько проблем. Очевидно, мы не хотим, чтобы нас постоянно спрашивали пароль для SSH-соединения и приходилось проверять ключ. Но вы можете решить эти проблемы, если настроите VPN вручную.
Проблемы
Большинство современных систем не позволяют войти в систему под пользователем root с использованием пароля, а иногда и вовсе не позволяют подключиться к системе в этом режиме. Поэтому нам нужно сначала решить эту проблему. Кроме того, когда NetworkManager запускает SSH, он ищет ключ пользователя root вместо ключа обычного пользователя. Если бы он не мог что-то найти, он бы остановился. Поэтому нам необходимо обеспечить беспрепятственный вход в систему root.
Чтобы разрешить root войти на сервер, отредактируйте файл /etc/ssh/sshd_config и установите для PermitRootLogin значение Yes. Я рекомендую работать в этом режиме только в течение времени, необходимого для выполнения последующих этапов настройки сервера. Затем вам необходимо перезапустить sshd-сервер, например, с помощью следующей команды:
systemctl restart sshd
Ещё можно воспользоваться такой командой:
/etc/init.d/ssh restart
Потом после входа на локальный компьютер с использованием стандартной учетной записи, вам необходимо задействовать ssh-copy-id для установки сертификата на хост-компьютере. Как только это будет сделано, вам нужно возвратиться на сервер и поменять значение PermitRootLogin в /etc/ssh/sshd_config на запретный пароль. Благодаря этому к серверу можно будет присоединиться как пользователь root, используя сертификат, а не пароль.
Если вы уже вошли в систему как root, по-видимому, вас уже спросили, желаете ли вы принять ключ сервера. Если это не так, у нас есть проблема. Если можете, войдите в систему и ответьте «да» на соответствующий вопрос,послечего система перестанет задавать вопрос. Разумеется если это невозможно сделать, мы можем решить проблему, отключив StrictHostKeyChecking.
Теоретически можно передать плагину NetworkManager дополнительные параметры ssh, но по какой-то причине этот подход не работает с версией плагина из репозиториев. Если вы не используете плагин и делаете все вручную, то необходимые настройки можно сделать самостоятельно. Настройки SSH для пользователя root можно установить в /root/.ssh/config. Вы также можете установить глобальные настройки в /etc/ssh/ssh_config.
Если вы корректируете глобальные настройки. рассмотрите перспективу внедрения /etc/ssh/ssh_config.d, если ваша система поддерживает это. Благодаря этому вы сумеете задать параметры для реального хоста, которые не будут перезаписаны при обновлении системы. Например, вы можете воссоздать файл hackaday.conf в соответствующем каталоге:
Host *.hackaday.com hackaday.com
StrictHostKeyChecking no
Tunnel yes
Снова же, если вам не нравится проверка ключа хоста, просто войдите в систему как root один раз и примите удаленный ключ собственноручно. Или, если вы смелы, отредактируйте /root/.ssh/known_hosts собственноручно.
Подключение
Сейчас все необходимо быть способно к работе. Если вы задействуете плагин NetworkManager, вам просто нужно будет установить новое соединение. То есть вам нужно войти в подраздел VPN-подключения и подобрать SSH.
Выбор типа соединения
Сейчас вам нужно настроить несколько параметров для нового сопряжения. В том числе – необходимо обозначить сертификат, который вы желаете применить для входа в удаленную систему.
Настройка соединения
После сохранения настроек подключения это подсоединение надо активировать, как и любой другой-то сетевой интерфейс. Если вы хотите опробовать свой новый VPN, поначалу, как обычно, проверьте свой IP-адрес на особом сайте. После этого активируйте VPN и повторно выясните свой адрес. Если вам не удается установить VPN-соединение,проверьте системный журнал на нахождение информации об ошибках, продуцированных SSH.
Заключение
Разумеется, есть и иные решения VPN. Но практически гарантированно, что на периферийном компьютере, с которым вы работаете, есть SSH-сервер. Естественно рекомендуемый метод налаживания VPN-соединения через SSH — это простенькое и комфортное решение, которое можно задействовать без какой-либо экспертной спецподготовки.