Günümüzde VPN teknolojisi daha popüler hale geliyor. Sıradan kullanıcılar İnternet'e güvenli bir şekilde erişmek için VPN kullanıyor. Ayrıca yerel olarak engellenen web sitelerini ve hizmetleri atlatmaya ve olası harici kötü niyetli davranışlara karşı korumaya yardımcı oluyor. Bir VPN sunucusuna bağlandığınızda, bilgisayarınız ile sunucu arasında dışarıdan erişilemeyen güvenli bir tünel olur, böylece VPN sunucusu İnternet erişim noktanız olur. Hem ücretsiz hem de ücretli birçok VPN hizmeti var, ancak herhangi bir nedenle sizin için çalışmıyorlarsa, her zaman kendi VPN sunucunuzu yapılandırabilirsiniz.
Kendi VPN'inizi çalıştırmak için bir VPS sunucusu kiralamanız gerekir . VPN bağlantısı oluşturmanıza olanak tanıyan farklı yazılımlar vardır. Bunlar, destekledikleri işletim sistemleri ve kullandıkları algoritmalar bakımından birbirinden farklıdır. VPN sunucusu kurmak için iki bağımsız yaklaşıma göz atacağız. Birincisi, artık eski ve güvenli olmayan ancak yapılandırması gerçekten kolay olan PPTP protokolüne dayanmaktadır. Diğeri ise modern ve güvenli OpenVPN yazılımını kullanır, ancak üçüncü taraf bir istemci uygulamasının yüklenmesini ve daha kapsamlı bir kurulum sürecini gerektirir.
Test ortamımızda Ubuntu Server 18.04 tarafından desteklenen bir sanal sunucu kullanacağız. Sunucudaki bir güvenlik duvarı kapatılacak çünkü yapılandırması ayrı bir makaleyi hak ediyor. Windows 10'daki kurulum sürecini açıklayacağız.
Hazırlık
Hangi VPN sunucusunu seçerseniz seçin, İnternet erişimi işletim sisteminin entegre araçlarıyla kurulacaktır. Harici bir servis arayüzü üzerinden İnternet erişimini açmak için arayüzler arasında paket iletimine izin vermeli ve ağ adresi çevirisini yapılandırmalısınız.
Paket yönlendirmeyi etkinleştirmek için "/etc/sysctl.conf" dosyasını açın ve "net.ipv4.ip_forward" parametresinin değerini 1 olarak değiştirin.
Bilgisayarı yeniden başlatmadan değişiklikleri uygulamak için şu komutu çalıştırın:
sudo sysctl -p /etc/sysctl.conf
Ağ adresi çevirisi (NAT) iptables aracılığıyla yapılandırılır . Öncelikle, "ip link show" komutunu çalıştırarak harici ağ arayüzünüzün adını kontrol edin - bir sonraki adımda buna ihtiyacınız olacak. Bizim adımız "ens3".
Tüm yerel ağ düğümleri için harici arayüzünüzde ağ adresi çevirisini etkinleştirin.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Sunucunuzun arayüzünün gerçek adını belirtmeniz gerektiğini unutmayın, bizimkinden farklı olabilir.
Varsayılan olarak, iptables tarafından oluşturulan tüm kurallar sunucu yeniden başlatıldıktan sonra sıfırlanır. Bunu önlemek için "iptables-persistent" yardımcı programını kullanın. Aşağıdaki paketi yükleyin:
sudo apt install iptables-persistent
Kurulum işlemi sırasında bir noktada, mevcut iptables kurallarını kaydetmenizi öneren bir yapılandırma penceresi göreceksiniz. Kurallar zaten tanımlanmış olduğundan, sadece onaylayın ve iki kez "Evet" e tıklayın . Artık kurallar sunucu yeniden başlatıldıktan sonra otomatik olarak uygulanacaktır.
PPTP sunucusu
Sunucu yapılandırması
Paketi yükleyin:
sudo apt install pptpd
Kurulum tamamlandıktan sonra, herhangi bir metin düzenleyiciyle "/etc/pptpd.conf" dosyasını açın ve aşağıdaki gibi düzenleyin:
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
Bundan sonra, "/etc/ppp/pptpd-options" dosyasını düzenleyin . Parametrelerin çoğu varsayılan olarak ayarlanmıştır.
#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
Bir sonraki aşamada, istemci bağlantıları için bir kayıt oluşturmanız gerekecek. Diyelim ki "vpnuser" adlı bir kullanıcıyı "1" şifresiyle eklemek ve ona dinamik adresleme izni vermek istiyorsunuz. "/etc/ppp/chap-secrets" dosyasını açın ve dosyanın sonuna kullanıcının parametreleriyle birlikte aşağıdaki satırı ekleyin:
vpnuser pptpd 1 *
“pptpd” değeri, “pptpd-options” dosyasında belirttiğimiz servisin adıdır . “*” yerine sabit bir IP adresi de belirtebilirsiniz. Sonuç olarak, “chap-secrets” dosyası şu şekilde görünmelidir:
Ayarları uygulamak için pptpd hizmetini sıfırlayın ve otomatik yüklemeye ekleyin.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Sunucu yapılandırması tamamlandı.
İstemci yapılandırması
Başlat - Ayarlar - Ağ ve İnternet - VPN yolunu izleyin ve "VPN bağlantısı ekle" seçeneğine tıklayın.
Açılan pencerede bağlantı parametrelerini girin ve "Kaydet" e tıklayın.
- VPN sağlayıcısı: “Windows (yerleşik)”
- Bağlantı adı: “vpn_connect” (herhangi bir ad seçebilirsiniz)
- Sunucu adı veya adresi: (Sunucunun harici IP adresini belirtin)
- VPN türü: “Otomatik”
- Oturum açma bilgisi türü: “Kullanıcı adı ve şifre”
- Kullanıcı adı: vpn kullanıcısı (Sunucudaki “chap-secrets” dosyasında belirtilen ad)
- Parola: 1 (örneğin “chap-secrets” dosyasında olduğu gibi)
Parametreleri kaydettikten sonra, pencerede yeni VPN bağlantısını göreceksiniz. Bağlantıya sol tıklayın ve "Bağlan"ı seçin . Bağlantı başarılı olursa, "Bağlandı" durumunu göreceksiniz.
Seçenekler bölümünde, istemci ve sunucunun dahili adreslerini bulacaksınız. "Hedef adres" alanı , harici sunucu adresini gösterir.
Bağlantı kurulduğunda, sunucunun dahili IP adresi ( bizim örneğimizde 172.16.0.1) , giden tüm paketler için varsayılan ağ geçidi haline gelir.
Herhangi bir çevrimiçi hizmeti kullanarak bilgisayarınızın harici IP adresinin artık VPN sunucunuzun IP adresiyle aynı olduğundan emin olabilirsiniz.
OpenVPN sunucusu
Sunucu yapılandırması
Mevcut kullanıcının izin seviyesini yükseltelim çünkü daha sonraki yapılandırmamız için root erişimine ihtiyacımız olacak.
sudo -s
Gerekli tüm paketleri yükleyin. Şifreleme anahtarlarını yönetmek için "Easy-RSA" paketine ihtiyacımız olacak.
apt install openvpn easy-rsa iptables-persistent
1194 numaralı porttan UDP protokolü ile gelen bağlantılara izin verin ve iptables kurallarını uygulayın.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
“Easy-RSA” paketinden kopyalanan dosyaların olduğu bir dizin oluşturun ve içine gidin.
make-cadir ~/openvpn
cd ~/openvpn
Ortak Anahtar Altyapısı (PKI) Oluşturun.
./easyrsa init-pki
Sertifika Yetkilisi (CA) kök sertifikasını oluşturun.
./easyrsa build-ca
Oluşturma işlemi sırasında bir parola belirlemeniz ve hatırlamanız istenecektir. Ayrıca soruları yanıtlamanız ve anahtar sahibi hakkında bilgi girmeniz gerekecektir. Köşeli parantez içinde verilen varsayılan değerleri bırakabilirsiniz. Girişi tamamlamak için "Enter" tuşuna basın.
Özel bir anahtar ve bir sertifika isteği oluşturun. Argüman olarak, rastgele bir ad belirtin; bizim örneğimizde bu "vpn-server"dır.
./easyrsa gen-req vpn-server nopass
Ortak Ad değerini varsayılan olarak bırakın.
Oluşturulan sunucu sertifika isteğini imzalayın.
./easyrsa sign-req server vpn-server
Bu adımda imzayı onaylamak için "evet" cevabını verin, ardından kök sertifika oluşturma sırasında oluşturulan parolayı girin.
Diffie-Hellman parametrelerini oluşturun. Bu parametreler, sunucu ve istemci arasında güvenli anahtar değişimi için kullanılır.
./easyrsa gen-dh
Gerekli tüm dosyalar oluşturuldu. OpenVPN çalışma dizininde anahtarları saklamak için bir "keys" klasörü oluşturalım ve oluşturulan dosyaları oraya kopyalayalım.
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
NAT'ı kullanarak yapılandırın iptables kurallar. Adlı bir dosya oluşturun nat ve düzenleme için açın /etc/openvpn/ dizin.
#!/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
Dosyayı kaydedin ve çalıştırılabilir hale getirin.
sudo chmod 755 /etc/openvpn/nat
Sunucu yapılandırma şablonunu kopyalayın.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
"/etc/openvpn/server.conf" dosyasını düzenlemek için açın, aşağıdaki satırları içerdiğinden emin olun ve gerekirse düzenleyin:
#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
Sunucuda trafik yönlendirmeyi etkinleştirin.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Yapılandırmayı uygulamak için OpenVPN'i başlatın.
systemctl restart openvpn@server
Sunucu yapılandırması tamamlandı!
İstemci yapılandırması
OpenVPN'in resmi web sitesine " https://openvpn.net " adresinden girin ve "TOPLULUK" bölümüne gidin.
Aşağı kaydırın ve işletim sistemi sürümünüze uygun yükleyiciyi indirin. Bizim örneğimizde Windows 11 ARM64'tür.
Uygulamayı tüm parametreleri varsayılan şekilde bırakarak yükleyin.
Bir sonraki aşamada sunucuda aşağıdaki dosyayı hazırlamanız ve istemci bilgisayara aktarmanız gerekecektir:
- genel ve özel anahtarlar;
- sertifika merkezi anahtarının kopyası;
- yapılandırma dosyası şablonu.
Sunucuya bağlanın, ayrıcalıkları yükseltin ve oluşturduğumuz dizine gidin "~/openvpn".
sudo -s
cd ~/openvpn
İstemci için özel bir anahtar ve bir sertifika isteği oluşturun. Argüman olarak, rastgele bir ad belirtin; bizim örneğimizde bu "client1"dir.
./easyrsa gen-req client1 nopass
Kök sertifikayı oluştururken belirlediğimiz şifreyi girip, Ortak Ad değerini varsayılan olarak bırakalım.
Oluşturulan istemci sertifika isteğini imzalayın.
./easyrsa sign-req client client1
Bu adımda imzayı onaylamak için "evet" cevabını verin, ardından kök sertifika oluşturma sırasında oluşturulan parolayı girin.
Kolaylık olması açısından, ana dizinde 'client1' adında bir klasör oluşturalım ve istemci bilgisayara aktarılacak tüm dosyaları bu klasörün içine kopyalayalım.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
İstemci yapılandırma dosyası şablonunu aynı dizine kopyalayın. Kopyalama sırasında dosya uzantısını “.ovpn” olarak değiştirin.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
İstemciye dağıtabilmek için "~/client1/" dizininin ve tüm dosyaların sahibini değiştirin . Bizim örneğimizde sahibi "mihail" yapalım.
chown -R mihail:mihail ~/client1
İstemci bilgisayara gidin ve “~/client1/” klasörünün içeriğini kopyalayın. Bunu Putty ile birlikte gelen “PSCP” yardımcı programı yardımıyla yapabilirsiniz .
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
“ca.crt” , “client1.crt” ve “client1.key” dosyalarını istediğiniz yere kaydedebilirsiniz . Bizim durumumuzda, bunlar “c:\Program Files\OpenVPN\keys” klasöründe bulunuyor ve yapılandırma dosyası “client.ovpn” dosyasını “c:\Program Files\OpenVPN\config” dizinine taşıyoruz.
Şimdi istemciyi yapılandırmaya geçelim. "c:\Program Files\OpenVPN\config\client.ovpn" dosyasını bir metin düzenleyicide açın ve aşağıdaki satırları düzenleyin:
#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
Gerisini olduğu gibi bırakın.
Dosyayı kaydedin ve "OpenVPN GUI" istemci uygulamasını başlatın.
Görev çubuğundaki uygulama simgesine sağ tıklayın ve "Bağlan" seçeneğini seçin . Bağlantı başarılı olursa simge yeşil renge dönecektir.
Herhangi bir çevrimiçi hizmeti kullanarak genel IP adresinizin değiştiğinden ve artık sunucunun IP adresiyle aynı olduğundan emin olun.