Digital Ocean’da Ubuntu üzerinde VPN sunucusu kurma

Bu yazı güncelliğini yitirmiştir. Yazıda anlatılan pptp protokolü macOS ve iOS cihazlarda desteklenmemektedir. Yazı, arşiv amaçlı silinmemiştir. Yazıdaki yönergeleri kullanmanız önerilmez.

Digital Ocean‘da bir sanal sunucunuz var, hem de Ubuntu yüklü ve VPN sunucusu kurmak istiyorsunuz ya da henüz sunucunuz yok ama bir sunucu oluşturup VPN sunucusu kurmak istiyorsunuz (Nasıl bir sunucu sahibi olacağınızı bilmiyorsanız sizi böyle alalım). Bu makale ile bu sorularınıza cevap vermeye çalışacağım.

Digital Ocean’a verdiğim bağlantılarda kendi referans kodum yer alıyor. Bu referans ile bir hesap açtığınızda hesabınıza 60 günlük deneme süresi için 100$ otomatik olarak yükleniyor. Eğer bu 100$’ın haricinde 25$’lık harcama yaparsanız, bana da 25$ yükleniyor. Yani hem siz, hem ben kazanıyorum. :) Kullananlara şimdiden teşekkürler!

Bu makale ile temel olarak iki şey yapacağız;

  • pptp kurulumu ve ayarları (Point-to-Point Tunneling Protocol – Noktadan noktaya tünel protokolü)
  • ufw kurulumu ve ayarları (The Uncomplicated Firewall, iptables da kullanılabilir fakat basit olması için ufw kullanacağız)

İlk olarak sunucunuzun yönetim ekranına girin. Aşağıdaki ekran görüntüsündeki gibi, sunucu isminizin hemen yanında yer alan “Console Access” tuşuna tıklayın.

Konsol Erişimi

Açılacak ekranda bir süre bekleyin. Orta kısımda siyah bir dikdörtgen belirecektir. Eğer bir süre beklediniz ve siyah dikdörtgen içinde hiç bir yazı karşınıza çıkmazsa, dikdörtgenin içine tıklayıp herhangi bir tuşa basın. Giriş bilgilerinizi soran bir ekran karşınıza çıkacaktır. Hesabınızla giriş yapın.

Giriş yaptıktan sonra ilk iş eğer yüklü değilse pptp ve ufw yüklemek olacak. Bunun için komut satırına aşağıdaki komutu yazın ve enter tuşuna basın.

sudo apt-get -y install pptpd ufw

Firewall kurduğumuz için ihtiyacımız olan portlara izin vermemiz gerekecek. Eğer sunucusunu başka işler için de kullanıyorsanız (örneğin web sunucusu, genelde port 80. MySQL sunucusu, genelde port 3306 gibi) bu portları da açmanız gerekcektir. Port açmak için kullanacağımız komut ufw allow komutudur. Biz 22 ve 1723 numaralı portları açacağız. 22 SSH portudur, bu portu açmazsak sunucumuza tekrar konsol erişimi sağlayamayabilriiz. 1723 ise ppt protokolünün kullandığı porttur. Portlara izin verdikten sonra ufw enable komutu ile Firewall’u etkin hale getiriyoruz.

sudo ufw allow 22
sudo ufw allow 1723
sudo ufw enable

Sırada pptpd ayarları var. VPN sunucunuza erişecek işletim sistemleri ile ilgili ufak bir ayar yapmamız gerekiyor. Bunun için /etc/ppp/pptpd-options dosyasını düzenleyeceğiz. Favori metin editörünüz ile dosyayı açın. (Benimki nano, dosyayı açmak için sudo nano /etc/ppp/pptpd-options yazıp enter’a basıyorum.) İşletim sistemi gözetmeksizin bağlantı sağlayabilmek için bir kaç satırı geçersiz kılmamız gerekiyor. Bunun için satırları silebilirsiniz ama daha iyisi, satırların başında # işareti koyarak o satırın işlenmemesini sağlayabilirsiniz. Aşağıdaki satırları bulup başlarına # işareti koyun.

refuse-pap
refuse-chap
refuse-mschap

Hazır pptpd ayarlarıyla oynuyorken VPN’e bağlıyken kullanabileceğimiz DNS sunucularını da tanımlayalım. ms-dns ile başlayan satırları bulun, varsa başlarındaki # işaretlerini kaldırın ve DNS adreslerini girin. Google DNS’leri için örnek aşağıdaki gibi olmalıdır;

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Dosyayı kaydedin ve metin editöründen çıkın. (Nano kullanıyorsanız dosyayı kaydetmek için CTRL-O (windows) ya da kntrl-O (mac) yapıp, üzerine yazayım mı sorusuna Evet/Yes cevabı verin. Çıkmak için de CTRL-X / kntrl-X tuş kombinasyonunu kullanabilirsiniz.)

Sırada /etc/pptpd.conf dosyasında yapacağımız ufak bir değişiklik var. Dosyayı metin editörünüz ile açın (Örn: sudo nano /etc/pptpd.conf) ve localip, remoteip değerlerinin yanındaki IP adreslerini silip, sunucunuzun IP adresini yazın. remoteip değerinde direkt sunucuzun IP adresi yerine IP adresinizin son hanesi için bir aralık verebilirsiniz. Sunucunuz her zaman kendi IP adresi ile internete çıkmıyor olabilir. Bu aralığı tanımlamanız zayesinde daha güvenli sularda yüzüyor olursunuz. Dosyayı kaydedin ve editörden çıkın.

localip 36.23.123.149
remoteip 36.23.123.99-199

Sıra geldi VPN sunucumuzda kullanmak üzere hesap tanımlamaya. /etc/ppp/chap-secrets dosyasını editörünüzde açın. (sudo nano /etc/ppp/chap-secrets) Hesap tanımlama biçimi aşağıdaki gibidir;

[Kullanıcı adı] [Servis] [Parola] [İzin verilen IP adresi]

Her bir satıra bir hesap denk gelecek şekilde birden çok hesap açabilirsiniz. Bir hesap ile aynı anda bir bağlantı kurulabileceğinden evinizdeki çeşitli cihazlar için birden çok hesap oluşturabilirsiniz. Örneğin;

telefon pptpd parola *
tablet pptpd parola *

Dosyayı kaydedip çıkın ve pptpd servisini yeniden başlatın (sudo service pptpd restart)

IPv4 için IP yönlendirmesini etkinleştirmemiz gerekiyor. Bunun için /etc/sysctl.conf dosyasını düzenlemeliyiz. Dosyayı metin editöründe açıp (sudo nano /etc/sysctl.conf) aşağıdaki satırın başındaki # işaretini kaldırın.

net.ipv4.ip_forward=1

Dosyayı kaydedip çıktıktan sonra sudo sysctl -p komutu ile ayar dosyasını yeniden yükleyin.

ufw için de bir kaç ayar yapmamız gerekiyor. /etc/default/ufw dosyasında yer alan DEFAULT_FORWARD_POLICY ayarını DROP yerine ACCEPT olarak değiştirin.

/etc/ufw/before.rules dosyasını açın, *filter satırınden hemen öncesine aşağıdaki satırları kopyalayıp yapıştırın (elbette kendi ip adresiniz ile. IP adresinizin son bölümünü 0 olarak değiştirin)

# NAT table rules
*nat

:POSTROUTING ACCEPT [0:0]
# Allow forward traffic to eth0
-A POSTROUTING -s 36.23.123.0/24 -o eth0 -j MASQUERADE

# Process the NAT table rules
COMMIT

Dosyayı kaydedip çıktıktan sonra sudo ufw disable && sudo ufw enable yaparak firewall’ı baştan başlatın.

Tebrikler! VPN sunucunuz kullanıma hazır. Cihazınızda VPN ayarlarını yapmak için;

“Digital Ocean’da Ubuntu üzerinde VPN sunucusu kurma” üzerine 2 yorum

  1. Herşeyi yaptım ancak bir türlü çalıştıramıyorum ateş edecem sisteme şimdi :)

  2. Geri bildirim: Ozan Caglargil

Yorumlar kapalı.