Pada masa kini, teknologi VPN menjadi lebih popular. Pengguna biasa menggunakan VPN untuk mengakses Internet dengan selamat. Ia juga membantu mengatasi tapak web dan perkhidmatan yang disekat secara tempatan dan melindungi daripada kemungkinan tingkah laku jahat luaran. Apabila anda menyambung ke pelayan VPN, terdapat terowong selamat antara komputer anda dan pelayan yang tidak boleh diakses dari luar, jadi pelayan VPN menjadi pusat akses Internet anda. Terdapat banyak perkhidmatan VPN di luar sana, percuma dan berbayar, tetapi jika ia tidak berfungsi untuk anda atas sebab tertentu, anda sentiasa boleh mengkonfigurasi pelayan VPN anda sendiri.
Untuk menjalankan VPN anda, anda harus sewa pelayan VPS. Terdapat perisian berbeza yang membolehkan anda membuat sambungan VPN. Ia berbeza antara satu sama lain mengikut sistem pengendalian yang disokong dan algoritma yang digunakan. Kami akan melihat dua pendekatan bebas untuk menyediakan pelayan VPN. Yang pertama adalah berdasarkan protokol PPTP yang sudah dianggap usang dan tidak selamat tetapi sangat mudah untuk dikonfigurasikan. Yang satu lagi menggunakan perisian OpenVPN moden dan selamat tetapi memerlukan pemasangan aplikasi klien pihak ketiga dan proses persediaan yang lebih teliti.
Dalam persekitaran ujian kami, kami akan menggunakan pelayan maya yang dikuasakan oleh Pelayan Ubuntu 18.04. Firewall akan dimatikan pada pelayan kerana konfigurasinya memerlukan artikel yang berasingan. Kami akan menerangkan proses persediaan pada Windows 10.
Persediaan
Tidak kira pelayan VPN yang anda pilih, akses Internet akan disediakan dengan cara bersepadu sistem pengendalian. Untuk membuka akses Internet melalui antara muka perkhidmatan luaran, anda perlu membenarkan penghantaran paket antara antara muka dan mengkonfigurasi terjemahan alamat rangkaian.
Untuk menghidupkan penghantaran semula paket, buka fail “/etc/sysctl.conf” dan perubahan “net.ipv4.ip_forward” nilai parameter ke dalam 1.
Untuk menggunakan perubahan tanpa but semula komputer, jalankan arahan
sudo sysctl -p /etc/sysctl.conf
Terjemahan alamat rangkaian dikonfigurasikan dengan cara iptables. Mula-mula, semak nama antara muka rangkaian luaran anda yang menjalankan arahan “tunjukkan pautan ip” - anda akan memerlukannya pada langkah seterusnya. nama kami ialah “ens3”.
Dayakan terjemahan alamat rangkaian pada antara muka luaran anda untuk semua nod rangkaian tempatan.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Ambil perhatian bahawa anda perlu menyatakan nama sebenar antara muka pelayan anda, ia mungkin berbeza daripada kami.
Secara lalai, semua peraturan yang dibuat oleh iptables ditetapkan semula selepas pelayan dimulakan semula. Untuk mengelakkannya, gunakan “iptables-persistent” utiliti. Pasang paket berikut:
sudo apt install iptables-persistent
Pada satu ketika semasa proses pemasangan, anda akan melihat tetingkap konfigurasi yang akan mencadangkan anda menyimpan peraturan iptables semasa. Memandangkan peraturan sudah ditetapkan, cuma sahkan dan klik "Ya" dua kali. Sejak sekarang peraturan akan digunakan secara automatik selepas pelayan dimulakan semula.
Pelayan PPTP
Konfigurasi pelayan
Pasang paket:
sudo apt install pptpd
Selepas pemasangan tamat, buka fail “/etc/pptpd.conf” dalam mana-mana editor teks dan edit seperti ini:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Selepas itu, edit fail “/etc/ppp/pptpd-options”. Kebanyakan parameter ditetapkan secara lalai.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
Pada peringkat seterusnya, anda perlu membuat rekod untuk sambungan pelanggan. Katakan anda ingin menambah pengguna "vpnuser" dengan kata laluan "1" dan membenarkan pengalamatan dinamik untuknya. Buka fail "/etc/ppp/chap-secrets" dan tambahkan baris berikut dengan parameter pengguna pada penghujung fail:
vpnuser pptpd 1 *
“pptpd” value ialah nama perkhidmatan yang kami tentukan dalam fail “pptpd-options”. Sebaliknya "*" anda boleh menentukan alamat IP tetap. Hasilnya, fail “rahsia-rahsia” sepatutnya kelihatan seperti ini:
Untuk menggunakan tetapan tetapkan semula pptpd perkhidmatan dan tambahkannya pada autoloading.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfigurasi pelayan selesai.
Konfigurasi pelanggan
Buka "Mula" - "Tetapan" - Rangkaian & Internet - "VPN" dan klik “Tambah sambungan VPN”
Masukkan parameter sambungan dalam tetingkap yang dibuka dan klik “Simpan”
- Pembekal VPN: "Windows (terbina dalam)"
- Nama sambungan: “vpn_connect” (anda boleh memilih mana-mana nama)
- Nama atau alamat pelayan: (nyatakan alamat IP luaran pelayan)
- Jenis VPN: "Auto"
- Jenis maklumat log masuk: "Nama pengguna dan kata laluan"
- Nama pengguna: vpnuser (nama dinyatakan dalam fail "chap-secrets" pada pelayan)
- kata laluan: 1 (seperti dalam fail "chap-secrets")
Selepas menyimpan parameter, anda akan melihat sambungan VPN baharu dalam tetingkap. Klik kiri sambungan dan pilih "Sambung". Dalam kes sambungan yang berjaya, anda akan lihat "Bersambung" status.
Dalam Pilihan, anda akan menemui alamat dalaman pelanggan dan pelayan. Padang “Alamat destinasi” memaparkan alamat pelayan luaran.
Apabila disambungkan, alamat IP dalaman pelayan, 172.16.0.1 dalam kes kami, menjadi gerbang lalai untuk semua paket keluar.
Menggunakan mana-mana perkhidmatan dalam talian anda boleh memastikan bahawa alamat IP luaran komputer kini sama dengan alamat IP pelayan VPN anda.
Pelayan OpenVPN
Konfigurasi pelayan
Mari kita tingkatkan tahap kebenaran pengguna semasa kerana untuk konfigurasi selanjutnya kita memerlukan akses root.
sudo -s
Pasang semua paket yang diperlukan. Kami akan perlukan “RSA mudah” paket untuk mengurus kunci penyulitan.
apt install openvpn easy-rsa iptables-persistent
Benarkan sambungan masuk pada port 1194 melalui protokol UDP dan gunakan peraturan iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Buat direktori dengan fail yang disalin daripada pakej "Easy-RSA" dan navigasi ke dalamnya.
make-cadir ~/openvpn
cd ~/openvpn
Menjana Infrastruktur Kunci Awam (PKI).
./easyrsa init-pki
Hasilkan sijil akar Certificate Authority (CA).
./easyrsa build-ca
Semasa proses penciptaan, anda akan digesa untuk menetapkan dan mengingati kata laluan. Anda juga perlu menjawab soalan dan memasukkan maklumat tentang pemilik kunci. Anda boleh meninggalkan nilai lalai yang disediakan dalam kurungan segi empat sama. Tekan "Enter" untuk memuktamadkan input.
Hasilkan kunci peribadi dan permintaan sijil. Sebagai hujah, nyatakan nama sewenang-wenangnya; dalam kes kami, ia adalah "pelayan vpn".
./easyrsa gen-req vpn-server nopass
Biarkan nilai Common Name sebagai lalai.
Tandatangani permintaan sijil pelayan yang dijana.
./easyrsa sign-req server vpn-server
Pada langkah ini, jawab "ya" untuk mengesahkan tandatangan, kemudian masukkan kata laluan yang telah dibuat semasa penjanaan sijil akar.
Hasilkan parameter Diffie-Hellman. Parameter ini digunakan untuk pertukaran kunci selamat antara pelayan dan klien.
./easyrsa gen-dh
Semua fail yang diperlukan telah dihasilkan. Mari buat folder "kunci" dalam direktori kerja OpenVPN untuk menyimpan kunci dan menyalin fail yang dibuat di sana.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Konfigurasikan NAT menggunakan iptables peraturan. Buat fail bernama nat dan bukanya untuk diedit dalam /etc/openvpn/ direktori.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Simpan fail dan jadikan ia boleh laku.
sudo chmod 755 /etc/openvpn/nat
Salin templat konfigurasi pelayan.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Buka fail “/etc/openvpn/server.conf” untuk mengedit, pastikan ia mengandungi baris berikut dan editnya jika perlu:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Dayakan pemajuan trafik pada pelayan.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Mulakan OpenVPN untuk menggunakan konfigurasi.
systemctl restart openvpn@server
Konfigurasi pelayan telah selesai!
Konfigurasi pelanggan
Pergi ke laman web rasmi OpenVPN “https://openvpn.net”, pergi ke “KOMUNITI” bawah seksyen ini.
Tatal ke bawah dan muat turun pemasang untuk versi sistem pengendalian anda. Dalam kes kami, ia adalah Windows 11 ARM64.
Pasang aplikasi meninggalkan semua parameter secara lalai.
Pada peringkat seterusnya anda perlu menyediakan fail berikut pada pelayan dan memindahkannya ke komputer klien:
- kunci awam dan peribadi;
- salinan kunci pusat pensijilan;
- templat fail konfigurasi.
Sambung ke pelayan, tingkatkan keistimewaan, dan navigasi ke direktori kami yang dibuat "~/openvpn".
sudo -s
cd ~/openvpn
Hasilkan kunci peribadi dan permintaan sijil untuk pelanggan. Sebagai hujah, nyatakan nama sewenang-wenangnya; dalam kes kami, ia adalah "klien1".
./easyrsa gen-req client1 nopass
Masukkan kata laluan yang kami tetapkan semasa membuat sijil akar dan biarkan nilai Nama Biasa sebagai lalai.
Tandatangani permintaan sijil pelanggan yang dijana.
./easyrsa sign-req client client1
Pada langkah ini, jawab "ya" untuk mengesahkan tandatangan, kemudian masukkan kata laluan yang telah dibuat semasa penjanaan sijil akar.
Untuk kemudahan, mari buat folder bernama 'client1' dalam direktori utama dan salin semua fail yang dimaksudkan untuk dipindahkan ke komputer klien ke dalamnya.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Salin templat fail konfigurasi klien ke direktori yang sama. Tukar sambungan fail kepada “.ovpn” sambil menyalin.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Tukar pemilik direktori dan semua fail “~/klien1/” untuk dapat mengedarkannya kepada pelanggan. Jom buat “mihail” pemilik dalam kes kami.
chown -R mihail:mihail ~/client1
Pergi ke komputer klien dan salin kandungannya “~/klien1/” folder. Anda boleh melakukannya dengan bantuan “PSCP” utiliti, yang berlaku dengan Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Anda boleh menyimpan fail utama “ca.crt”, “client1.crt”, “client1.key” di mana sahaja anda mahu. Dalam kes kami, mereka berada dalam folder ini "c:\Program Files\OpenVPN\keys", dan kami mod fail konfigurasi “client.ovpn” ke "c:\Program Files\OpenVPN\config" direktori.
Sekarang mari kita mula mengkonfigurasi klien. Buka fail “c:\Program Files\OpenVPN\config\client.ovpn” dalam editor teks dan edit baris berikut:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Biarkan selebihnya tidak disentuh.
Simpan fail dan lancarkan aplikasi klien “OpenVPN GUI”.
Klik kanan pada ikon aplikasi dalam bar tugas dan pilih "Sambung". Jika sambungan berjaya ikon akan bertukar hijau.
Gunakan mana-mana perkhidmatan dalam talian untuk memastikan alamat IP awam anda telah berubah dan kini sama dengan alamat IP pelayan.