VPS Sunucu üzerine OpenVPN Kurmak

Güncelleme #1: Eğer sadece web’de gezinmek için, engelli siteleri açmak için VPN’e ihtiyaç duyuyorsanız çok daha basit ve ücretsiz bir alternatifi var. Açıklamalarına buradan ulaşabilirsiniz. Eğer tüm sistem haberleşmesini VPN ile korumak istiyorsanız aşağıdakileri yapmanız gerekli.

Türkiye’de VPN hizmeti veren servisler de engellenince kendi özel VPN’in olmasının gerekliliği ortaya çıktı. Bu yazımda VPS üzerinde OpenVPN kurulumunu anlatacağım.

Biraz teknik detaylara gireceğim için linux, terminal, ssh, nano gibi kavramlara hakim olmayan kişilerin okuması yorucu olabilir. *NIX bazlı işletim sisteminde temelleri bildiğinizi varsayarak hareket ediyorum.

Öncelikle yurt dışından bir VPS alın. Ben https://www.ovh.ie/'den 3.49$’lık bir VPS sunucu aldım. Bu bedel aylık bir bedel. Satın alırken içine Debian 7 istediğinizi belirtin. Sunucu kaynak kullanımı ve paket optimizasyonu açısından en başarılısı Debian 7.

Size daha sonra kullanıcı root olan bir hesabın şifreleri gönderilecek. Aynı zamanda sunucu için bir IP adresi de gönderilecek. Bunlar erişim bilgilerimiz. macOS kullanıcıları terminal ile, Windows kullanıcıları da PuTTY ile bağlanabilirler.

sshlogin

Bağlandığımızda bu şekilde bir arabirim karşımıza çıkacak. Artık buradan çeşitli komutları vererek sistemi kurabiliriz.

# apt-get update
# apt-get upgrade
# apt-get install openvpn

Bu iki komut ile öncelikle yazılımları indireceğimiz noktayı düzenliyoruz. Daha sonra OpenVPN kurulumuna ve sertifika yaratılmasına geçiyoruz.

# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
# . ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-key client
# ./build-dh
# cd keys
# mv *.pem *.crt *.csr *.key /etc/openvpn
# cd /usr/share/doc/openvpn/examples/sample-config-files
# gunzip -c server.conf.gz > /etc/openvpn/server.conf

Kaç adet cihazda kullanacaksanız ./build-key client komutunda client yerine cihazınızın adını yazarak ona özel sertifika üretin.

Daha sonra /etc/openvpn/server.conf dosyasını nano ile editleyerek aşağıdaki satırları aktif hale getirin

proto tcp
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
user nobody
group nogroup

Bu işlemi tamamladıktan sonra OpenVPN sunucusunu baştan başlatın.

# /etc/init.d/openvpn restart

Daha sonra kullanacağınız cihaz için gerekli ayar dosyasını oluşturmanız gerekiyor. İster bu dosyayı aşağıdaki komutlarla oluşturun, ister anahtarları bir PC’nize aktarım onun üzerinde manuel kopyalayarak oluşturun.

Örnek bir tane oluşturmak için kodlar şöyle

# cd /etc/openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf client.ovpn
# echo "set CLIENT_CERT 0" >> client.ovpn
# echo "<ca>" >> client.ovpn
# cat ca.crt | grep -A 100 "BEGIN CERTIFICATE" | grep -B 100 "END CERTIFICATE" >> client.ovpn
# echo "</ca>" >> client.ovpn
# echo "<cert>" >> client.ovpn
# cat client.crt | grep -A 100 "BEGIN CERTIFICATE" | grep -B 100 "END CERTIFICATE" >> client.ovpn
# echo "</cert>" >> client.ovpn
# echo "<key>" >> client.ovpn
# cat client.key | grep -A 100 "BEGIN PRIVATE KEY" | grep -B 100 "END PRIVATE KEY" >> client.ovpn
# echo "</key>" >> client.ovpn

Daha sonra oluşturduğumuz /etc/openvpn/client.ovpn dosyasının içeriğini aşağıdaki şekilde değiştirin.

proto tcp
remote SunucuIPAdresi SunucuPortu
mute-replay-warnings
# ca ca.crt
# cert client.crt
# key client.key

Buradaki sunucu IP adresini ve portunu sizin sunucularınızın bilgileri ile değiştirin. Port default olarak 1194 gelir ama isterseniz değiştirebilirsiniz. Şimdi de Debian’ı ona genel bağlantıları internete çıkaracak şekilde konfigüre etmeliyiz. Aşağıdaki kodları sırasıyla aktif edin.

echo 1 > /proc/sys/net/ipv4/ip_forward

daha sonra IP yönlendirmeyi rebootlara dayanıklı hale getirmek için /etc/sysctl.conf dosyasına aşağıdaki satırı yazın.

net.ipv4.ip_forward = 1

Daha sonra da sunucu içerisinde gerekli yönlendirmeleri yaparak sürecimizi tamamlıyoruz.

iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.up.rules

İşte bu kadar. Tamamen fonksiyonel bir VPN sunucumuzu bulutta çalıştırmış olduk. Biraz önce yarattığımız “client.ovpn” dosyamızın bizim cihazlardan bağlanabilmemiz için gerekli şifreleri ve ayarları içeriyor. Bu dosya ile Android, iPhone, macOS, Windows ile kolayca kendi VPN’imize bağlanabiliriz.

Android’den bağlanmak için OpenVPN Connect yazılımını indirmeniz gerekli. -> Buradan

iOS’den bağlanmak için OpenVPN Connect yazılımını indirmeniz gerekli. -> Buradan

Windows’dan bağlanmak için OpenVPN’i indirmeniz gerekli. -> Buradan

macOS’den bağlanmak için Tunnelblick’i indirmeniz gerekli. -> Buradan (macOS Sierra kullanıcıları BETA sürümünü indirin)

Not: 1 sertifika ile sadece 1 cihaz bağlanabilir. Eğer 2. bir cihaz denerse sistem sizi atacaktır. O sebeple her cihaz için ./build-key (cihaz adı) komutuyla sertifika üretip ilgili OVPN dosyasını oluşturun.

Dilerim bu yazım sadece teknik bir makale olarak kalır…