Дословный перевод VPN — виртуальный частный канал.,Предоставляется между предприятиями или между физическими лицами и компаниямиБезопасная передача данныхтуннель,OpenVPN, несомненно, является пионером VPN с открытым исходным кодом под Linux.,Обеспечивает хорошую производительность и удобный графический интерфейс. [1]
Он широко использует библиотеку функций протокола SSLv3/TLSv1 в библиотеке шифрования OpenSSL. [1]
OpenVpnТехническое ядро – этовиртуальная сетевая карта,с последующимSSL-протоколвыполнить,Поскольку SSL-протоколсуществовать более четко представлен в других статьях,Ключевым моментом здесь являетсявиртуальная сетевая Представлен механизм работы карты и ее существование OpenVpn: [1]
виртуальная сетевая картаэто использоватьсеть Первый этажТехнология программированиявыполнитьводительпрограммное обеспечение,После установкисуществоватьХозяинНа экране появится еще одна сетевая карта.,Можно сделать как другие сетевые карты Конфигурация。Служить Программа можетсуществовать Открытый уровень приложениявиртуальная сетевая карта,нравитьсяфруктыприложениепрограммное обеспечение(нравитьсяIE)Квиртуальная сетевая карта отправляет данные, то программа Служить может их прочитать. Если программа Служить записывает соответствующие данные в виртуальную. сетевая карта,приложениепрограммное обеспечение Его также можно получить。виртуальная сетевая картасуществовать Многие операционные системы имеют соответствующиевыполнить,Это также очень важная причина, почему OpenVpn может быть кроссплатформенным. [1]
существоватьOpenVpnсередина,нравитьсяфрукты用户访问一个远程的виртуальный адрес(принадлежатьвиртуальная сетевая картаСоответствующая серия адресов,(отличается от реального адреса),Затем операционная система будет использовать механизм маршрутизации дляпакет(TUNмодель)илифрейм данных(TAPмодель)отправить ввиртуальная сетевая картаначальство,После того, как программа Служить получает данные и соответствующим образом их обрабатывает.,Отправлено из внешней сети через SOCKET,удаленное обслуживаниеПрограмма пройденаSOCKETиз внешней сетиначальствополучать данные,и выполнить соответствующую обработку,отправить ввиртуальная сетевая карта,ноприложениепрограммное обеспечениеможно получить,Завершен односторонний процесс передачи,наоборот. [1]
Протокол туннелирования «точка-точка» PPTP (PPTP) — это метод реализации виртуальных частных сетей. PPTP использует каналы управления туннелями TCP и GRE для инкапсуляции пакетов PPP. OpenVPN OpenVPN — это бесплатное программное решение с открытым исходным кодом для создания безопасных соединений «точка-точка» или «сеть-сеть» через виртуальную частную сеть (VPN) в конфигурации маршрутизатора или моста и в качестве устройства удаленного доступа. Он использует безопасное шифрование SSL/TLS и может проходить через трансляцию сетевых адресов (NAT) и межсетевые экраны. Важным фактором при выборе между PPTP и OpenVPN, находящимся вне нашего контроля, является то, что иногда интернет-провайдеры блокируют соединения PPTP. В этом случае у нас нет другого выбора, кроме как использовать OpenVPN. PPTP имеет ряд уникальных преимуществ, но OpenVPN в настоящее время будет хорошим выбором. PPTP можно применить практически ко всему программному обеспечению операционной системы без установки какого-либо программного обеспечения. Он также совместим со многими мобильными устройствами, такими как iPhone, iPad и Windows Mobile, и прост в установке. Для сравнения, установка OpenVPN немного сложнее, чем PPTP, но это не так уж сложно, если вы следуете правильным инструкциям. Обратите внимание, что OpenVPN несовместим с мобильными устройствами. Технология шифрования PPTP использует пароли в качестве ключей, а поток данных содержит доступный хешированный пароль. Если кто-то посередине перехватит поток данных и расшифрует код (хотя это возможно, но сложно), то он или она сможет расшифровать ваше сообщение. Однако OpenVPN использует очень надежную технологию шифрования (Blowfish). Даже если кто-то перехватит ваш поток данных, они ничего не смогут с этим поделать. Это делает OpenVPN гораздо более безопасным, чем PPTP. Выберите Если вы хотите высокий уровень безопасности и уделяете больше внимания вопросам безопасной передачи данных, вам следует использовать OpenVPN. Если вам нужна простота или вы хотите использовать VPN на своем мобильном устройстве, тогда PPTP для вас. Существуют и другие протоколы, такие как L2P или IPSec, но они не столь удобны для пользователя и не столь эффективны с точки зрения затрат.
sudo apt-get update
sudo apt-get install openvpn easy-rsa
Настройте каталог CA. OpenVPN — это TLS/SSLVPN, что означает, что для шифрования данных между клиентом и сервером требуется использование сертификатов. Чтобы выдавать доверенные сертификаты, мне нужно настроить собственный простой центр сертификации.
Скопируйте временный каталог easy-rsa в домашний каталог.
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
vim vars
Системные настройки по умолчанию следующие:
exportKEY_COUNTRY="US"
exportKEY_PROVINCE="CA"
exportKEY_CITY="SanFrancisco"
exportKEY_ORG="Fort-Funston"
exportKEY_EMAIL="me@myhost.mydomain"
exportKEY_OU="MyOrganizationalUnit"
моя конфигурация
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SX"
export KEY_CITY="TaiYuan"
export KEY_ORG="SYSU"
export KEY_EMAIL="bjernsen@163.com"
export KEY_OU="SDCS"
# X509 Subject Field
export KEY_NAME="server"
Функция Source FileName: чтение и выполнение команд в FileName в текущей среде bash.
cd ~/openvpn-ca
source vars
Следующий запрос верен. ПРИМЕЧАНИЕ. Если вы запустите ./clean-all, я выполню команду rm -rf для /home/sammy/openvpn-ca/keys.
Но моя ошибка заключается в следующем
**************************************************************
No /home/ubuntu/openvpn-ca/openssl.cnf file could be found
Further invocations will fail
**************************************************************
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/ubuntu/openvpn-ca/keys
Введите команду ls в каталоге opencpn-ca, и мы увидим множество файлов конфигурации openssl. Мы можем переименовать их в openssl.conf.
cp ~/openvpn-ca/openssl-1.0.0.cnf ~/openvpn-ca/openssl.cnf
Затем введите оправдание исходных переменных
По-прежнему в каталоге openvpn-ca создайте ca.
./clean-all
./build-ca
Просто продолжайте нажимать Enter для подтверждения.
Далее мы сгенерируем сертификат сервера и пару ключей, а также некоторую другую документацию, используемую в процессе шифрования. Сначала сгенерируйте OpenVPN-серверСертификат и пара ключей。Мы можем сделать это, набрав:
./build-key-server server
Далее мы создадим еще несколько проектов. Мы можем сгенерировать надежный ключ Диффи-Хеллмана для использования во время обмена ключами, набрав
./build-dh
После этого мы можем сгенерировать подпись HMAC для улучшения функции проверки целостности TLS сервера. После завершения этого шага в папке ~/openvpn-ca/keys будет создан файл ta.key.
openvpn --genkey --secret keys/ta.key
В openvpn этот метод конфигурации заключается в том, что каждому вошедшему в систему VPN-клиенту нужен сертификат, и каждый сертификат может использоваться только одним клиентом для одновременного подключения (если есть две машины с одним и тем же сертификатом, установленные и звонящие на сервер по адресу одновременно оба Dial up, но подключиться к сети может только тот, кто первым дозвонился). Поэтому необходимо создать множество сертификатов.
cd ~/openvpn-casource vars./build-key client1
перед началом,Принесите соответствующие документы, которые нам нужныкопироватьприезжать/etc/openvpn
этот Конфигурация Оглавлениесерединаидти,То есть~/openvpn-ca/keys
в каталоге ca.crt,ca.key,server.crt,server.key,HMAC подпись тоже Diffie-Hellman Документ скопирован в /etc/openvpn Ниже этого каталога
cd ~/openvpn-ca/keyssudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
Затем скопируйте документ конфигурации из шаблона конфигурации, который поставляется с OpenVPN.
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/cd /etc/openvpn/sudo gzip -d server.conf.gz
Далее измените документ конфигурации
sudo vim /etc/openvpn/server.conf
тогда ищиприезжатьtls-auth ta.key 0
,Добавить один ниже key-direction параметр, установите для него значение параметра 0
tls-auth ta.key 0key-direction 0
тогда ищиприезжатьcipher AES-256-CBC
,существовать Добавить нижеauth SHA256
user nobodygroup nobody
позволять IP Вперед Для начала нам нужно вывести наш сервер на Вперед трафик, это то что нам нужно VPN Самые основные функции, предоставляемые сервером. Мы можем изменить /etc/sysctl.conf Документация по настройке сетевых настроек
sudo vim /etc/sysctl.conf
существуют В этом документе,попытаться найтиприезжатьnet.ipv4.ip_forward
,Удалите «#» перед этой строкой:
net.ipv4.ip_forward=1
Затем сохраните и выйдите Чтобы прочитать файл sysctl.conf и применить измененные настройки для текущего сеанса системы, введите следующую команду:
sudo sysctl -p
Затем сохраните и выйдите Чтобы прочитать файл sysctl.conf и применить измененные настройки для текущего сеанса системы, введите следующую команду:
sudo sysctl -p
sudo service openvpn start
Проверьте статус VPN
sudo service openvpn status
Проверьте имя сетевой карты, по умолчанию — eth0.
ip route | grep default
Вы можете видеть, что в терминал выводится строка контента. Нужный нам слоган должен быть строкой, следующей сразу за «Разработка».
Например, мой результат выглядит следующим образом: мой общедоступный сетевой интерфейс enp2s0
$ ip route | grep default default via 172.18.159.254 dev enp2s0 proto static metric 100
Зная интерфейс, мы можем настроить конкретные правила UFW (установить правило по умолчанию POSTROUTING для таблицы NAT), чтобы настроить маскарадное соединение для любого трафика, поступающего из VPN.
кrootРазрешения открыты/etc/ufw/before.rules
документ,существуют после первого комментария Добавьте следующий раздел, как показано ниже:
# NAT table rules*nat:POSTROUTING ACCEPT [0:0]# Allow traffic from OpenVPN client to eth0(changeto the interface you discovered!)-A POSTROUTING -s 10.8.0.0/8 -o eth0 -jMASQUERADE #Вот сегмент виртуальной сети COMMIT, установленный для файла конфигурации# END OPENVPN RULES
Настроить брандмауэрпо умолчаниюпозволять Вперед Сумка,DROPИзменить наACCEPT
DEFAULT_FORWARD_POLICY="ACCEPT"
Настройте сам брандмауэр,Трафик к OpenVPN с лучшим,Если вы измените номер порта в файле конфигурации,Нужно переписываться здесь
ufw allow 1193/udpufw allow OpenSSH
Перезапустите брандмауэр. Теперь наш сервер может правильно обрабатывать трафик OpenVPN.
ufw disableufw enable
В папке конфигурации должно быть 5 вещей: ca.crt, client.crt, client1.ket, ta.key и файл конфигурации cilent.ovpn.
############################################### Sample client-side OpenVPN 2.0 config file ## for connecting to multi-client server. ## ## This configuration can be used by multiple ## clients, however each client should have ## its own cert and key files. ## ## On Windows, you might want to rename this ## file so it has a .ovpn extension ################################################ Specify that we are a client and that we# will be pulling certain config file directives# from the server.client# Use the same setting as you are using on# the server.# On most systems, the VPN will not function# unless you partially or fully disable# the firewall for the TUN/TAP interface.;dev tapdev tun# Windows needs the TAP-Win32 adapter name# from the Network Connections panel# if you have more than one. On XP SP2,# you may need to disable the firewall# for the TAP adapter.;dev-node MyTap# Are we connecting to a TCP or# UDP server? Use the same setting as# on the server.;proto tcpproto udp# The hostname/IP and port of the server.# You can have multiple remote entries# to load balance between the servers.remote 81.70.205.40 1194;remote my-server-1 1194;remote my-server-2 1194# Choose a random host from the remote# list for load-balancing. Otherwise# try hosts in the order specified.;remote-random# Keep trying indefinitely to resolve the# host name of the OpenVPN server. Very useful# on machines which are not permanently connected# to the internet such as laptops.resolv-retry infinite# Most clients don't need to bind to# a specific local port number.nobind# Downgrade privileges after initialization (non-Windows only)user nobodygroup nobody# Try to preserve some state across restarts.persist-keypersist-tun# If you are connecting through an# HTTP proxy to reach the actual OpenVPN# server, put the proxy server/IP and# port number here. See the man page# if your proxy server requires# authentication.;http-proxy-retry # retry on connection failures;http-proxy [proxy server] [proxy port #]# Wireless networks often produce a lot# of duplicate packets. Set this flag# to silence duplicate packet warnings.;mute-replay-warnings# SSL/TLS parms.# See the server config file for more# description. It's best to use# a separate .crt/.key file pair# for each client. A single ca# file can be used for all clients.ca ca.crtcert client1.crtkey client1.key# Verify server certificate by checking that the# certicate has the correct key usage set.# This is an important precaution to protect against# a potential attack discussed here:# http://openvpn.net/howto.html#mitm## To use this feature, you will need to generate# your server certificates with the keyUsage set to# digitalSignature, keyEncipherment# and the extendedKeyUsage to# serverAuth# EasyRSA can do this for you.remote-cert-tls server# If a tls-auth key is used on the server# then every client must also have the key.tls-auth ta.key 1key-direction 1# Select a cryptographic cipher.# If the cipher option is used on the server# then you must also specify it here.;cipher xcipher AES-256-CBCauth SHA256# Enable compression on the VPN link.# Don't enable this unless it is also# enabled in the server config file.comp-lzo# Set log file verbosity.verb 3# Silence repeating messages;mute 20
Использованные ссылки:
https://james-yip.github.io/2017/11/23/construct-VPN/
https://www.dazhuanlan.com/wuxinxiangshan/topics/1100854
https://cloud.tencent.com/developer/article/1840491