[Виртуальная машина Linux] Установка OpenVPN и базовые методы использования, которые помогут вам быстро разобраться в сети компании.
[Виртуальная машина Linux] Установка OpenVPN и базовые методы использования, которые помогут вам быстро разобраться в сети компании.
Что такое Опен ВПН

Дословный перевод VPN — виртуальный частный канал.,Предоставляется между предприятиями или между физическими лицами и компаниямиБезопасная передача данныхтуннель,OpenVPN, несомненно, является пионером VPN с открытым исходным кодом под Linux.,Обеспечивает хорошую производительность и удобный графический интерфейс. [1]

Он широко использует библиотеку функций протокола SSLv3/TLSv1 в библиотеке шифрования OpenSSL. [1]

OpenVpnТехническое ядро ​​– этовиртуальная сетевая карта,с последующимSSL-протоколвыполнить,Поскольку SSL-протоколсуществовать более четко представлен в других статьях,Ключевым моментом здесь являетсявиртуальная сетевая Представлен механизм работы карты и ее существование OpenVpn: [1]

виртуальная сетевая картаэто использоватьсеть Первый этажТехнология программированиявыполнитьводительпрограммное обеспечение,После установкисуществоватьХозяинНа экране появится еще одна сетевая карта.,Можно сделать как другие сетевые карты Конфигурация。Служить Программа можетсуществовать Открытый уровень приложениявиртуальная сетевая карта,нравитьсяфруктыприложениепрограммное обеспечение(нравитьсяIE)Квиртуальная сетевая карта отправляет данные, то программа Служить может их прочитать. Если программа Служить записывает соответствующие данные в виртуальную. сетевая карта,приложениепрограммное обеспечение Его также можно получить。виртуальная сетевая картасуществовать Многие операционные системы имеют соответствующиевыполнить,Это также очень важная причина, почему OpenVpn может быть кроссплатформенным. [1]

существоватьOpenVpnсередина,нравитьсяфрукты用户访问一个远程的виртуальный адрес(принадлежатьвиртуальная сетевая картаСоответствующая серия адресов,(отличается от реального адреса),Затем операционная система будет использовать механизм маршрутизации дляпакет(TUNмодель)илифрейм данных(TAPмодель)отправить ввиртуальная сетевая картаначальство,После того, как программа Служить получает данные и соответствующим образом их обрабатывает.,Отправлено из внешней сети через SOCKET,удаленное обслуживаниеПрограмма пройденаSOCKETиз внешней сетиначальствополучать данные,и выполнить соответствующую обработку,отправить ввиртуальная сетевая карта,ноприложениепрограммное обеспечениеможно получить,Завершен односторонний процесс передачи,наоборот. [1]

Разница между openvpn и pptp

Протокол туннелирования «точка-точка» 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, но они не столь удобны для пользователя и не столь эффективны с точки зрения затрат.

Установить VPN
Язык кода:javascript
копировать
sudo apt-get update
sudo apt-get install openvpn easy-rsa
Установить центр сертификации

Настройте каталог CA. OpenVPN — это TLS/SSLVPN, что означает, что для шифрования данных между клиентом и сервером требуется использование сертификатов. Чтобы выдавать доверенные сертификаты, мне нужно настроить собственный простой центр сертификации.

Скопируйте временный каталог easy-rsa в домашний каталог.

Язык кода:javascript
копировать
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
vim vars

Системные настройки по умолчанию следующие:

Язык кода:javascript
копировать
exportKEY_COUNTRY="US"
exportKEY_PROVINCE="CA"
exportKEY_CITY="SanFrancisco"
exportKEY_ORG="Fort-Funston"
exportKEY_EMAIL="me@myhost.mydomain"
exportKEY_OU="MyOrganizationalUnit"

моя конфигурация

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
cd ~/openvpn-ca
source vars

Следующий запрос верен. ПРИМЕЧАНИЕ. Если вы запустите ./clean-all, я выполню команду rm -rf для /home/sammy/openvpn-ca/keys.

Но моя ошибка заключается в следующем

Язык кода:javascript
копировать
**************************************************************
  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.

Язык кода:javascript
копировать
cp ~/openvpn-ca/openssl-1.0.0.cnf  ~/openvpn-ca/openssl.cnf

Затем введите оправдание исходных переменных

По-прежнему в каталоге openvpn-ca создайте ca.

Язык кода:javascript
копировать
./clean-all
./build-ca

Просто продолжайте нажимать Enter для подтверждения.

Создание сертификатов сервера, ключей и документов шифрования.

Далее мы сгенерируем сертификат сервера и пару ключей, а также некоторую другую документацию, используемую в процессе шифрования. Сначала сгенерируйте OpenVPN-серверСертификат и пара ключей。Мы можем сделать это, набрав:

Язык кода:javascript
копировать
./build-key-server server

Далее мы создадим еще несколько проектов. Мы можем сгенерировать надежный ключ Диффи-Хеллмана для использования во время обмена ключами, набрав

Язык кода:javascript
копировать
./build-dh

После этого мы можем сгенерировать подпись HMAC для улучшения функции проверки целостности TLS сервера. После завершения этого шага в папке ~/openvpn-ca/keys будет создан файл ta.key.

Язык кода:javascript
копировать
openvpn --genkey --secret keys/ta.key
Создать сертификат клиента и пару ключей

В openvpn этот метод конфигурации заключается в том, что каждому вошедшему в систему VPN-клиенту нужен сертификат, и каждый сертификат может использоваться только одним клиентом для одновременного подключения (если есть две машины с одним и тем же сертификатом, установленные и звонящие на сервер по адресу одновременно оба Dial up, но подключиться к сети может только тот, кто первым дозвонился). Поэтому необходимо создать множество сертификатов.

Язык кода:javascript
копировать
cd ~/openvpn-casource vars./build-key client1
Настройте службу OpenVPN

перед началом,Принесите соответствующие документы, которые нам нужныкопироватьприезжать/etc/openvpnэтот Конфигурация Оглавлениесерединаидти,То есть~/openvpn-ca/keysв каталоге ca.crt,ca.key,server.crt,server.key,HMAC подпись тоже Diffie-Hellman Документ скопирован в /etc/openvpn Ниже этого каталога

Язык кода:javascript
копировать
cd ~/openvpn-ca/keyssudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Затем скопируйте документ конфигурации из шаблона конфигурации, который поставляется с OpenVPN.

Язык кода:javascript
копировать
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/cd /etc/openvpn/sudo gzip -d server.conf.gz

Далее измените документ конфигурации

Язык кода:javascript
копировать
sudo vim /etc/openvpn/server.conf

​ тогда ищиприезжатьtls-auth ta.key 0,Добавить один ниже key-direction параметр, установите для него значение параметра 0

Язык кода:javascript
копировать
tls-auth ta.key 0key-direction 0

тогда ищиприезжатьcipher AES-256-CBC,существовать Добавить нижеauth SHA256

Язык кода:javascript
копировать
user nobodygroup nobody
Настройте сетевую конфигурацию сервиса

позволять IP Вперед Для начала нам нужно вывести наш сервер на Вперед трафик, это то что нам нужно VPN Самые основные функции, предоставляемые сервером. Мы можем изменить /etc/sysctl.conf Документация по настройке сетевых настроек

Язык кода:javascript
копировать
sudo vim /etc/sysctl.conf

существуют В этом документе,попытаться найтиприезжатьnet.ipv4.ip_forward,Удалите «#» перед этой строкой:

Язык кода:javascript
копировать
net.ipv4.ip_forward=1

Затем сохраните и выйдите Чтобы прочитать файл sysctl.conf и применить измененные настройки для текущего сеанса системы, введите следующую команду:

Язык кода:javascript
копировать
sudo sysctl -p

Затем сохраните и выйдите Чтобы прочитать файл sysctl.conf и применить измененные настройки для текущего сеанса системы, введите следующую команду:

Язык кода:javascript
копировать
sudo sysctl -p
Включите службу VPN
Язык кода:javascript
копировать
sudo service openvpn start

Проверьте статус VPN

Язык кода:javascript
копировать
sudo service openvpn status
Настроить брандмауэр

Проверьте имя сетевой карты, по умолчанию — eth0.

Язык кода:javascript
копировать
ip route | grep default

Вы можете видеть, что в терминал выводится строка контента. Нужный нам слоган должен быть строкой, следующей сразу за «Разработка».

Например, мой результат выглядит следующим образом: мой общедоступный сетевой интерфейс enp2s0

Язык кода:javascript
копировать
 $ 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документ,существуют после первого комментария Добавьте следующий раздел, как показано ниже:

Язык кода:javascript
копировать
# 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

Язык кода:javascript
копировать
DEFAULT_FORWARD_POLICY="ACCEPT"

Настройте сам брандмауэр,Трафик к OpenVPN с лучшим,Если вы измените номер порта в файле конфигурации,Нужно переписываться здесь

Язык кода:javascript
копировать
ufw allow 1193/udpufw allow OpenSSH

Перезапустите брандмауэр. Теперь наш сервер может правильно обрабатывать трафик OpenVPN.

Язык кода:javascript
копировать
ufw disableufw enable
Настроить клиент

В папке конфигурации должно быть 5 вещей: ca.crt, client.crt, client1.ket, ta.key и файл конфигурации cilent.ovpn.

Язык кода:javascript
копировать
############################################### 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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose