Centos 7 Üzerine OpenVPN Kurulumu

İnternetin gidişatı için VPN in mantığını ve önemini bu makalede anlatacak değilim konuya direk girmek lazım VPN şifreli bir network sunar böylelikle güvenliğinizi ve gizliliğinizi sağlayabilirsiniz.

epel depolarını sistemimize eklememiz gerekecek yoksa openvpn paketlerini kuramayız bunun için aşağıdaki yönergeleri takip edin

yum install epel-release -y

bu işlemimizden sonra OpenVPN kurulumu için komutumuzu veriyoruz.

yum install openvpn wget -y

OpenVPN in haberleşmesi ve bağlantıyı şifrelemesi içinde Easy RSA kurmamız lazım bunu eski depodakini kullanarak yakacağız.

wget -O /tmp/easy_rsa https://github.com/OpenVPN/easy-rsa2.3.3.tar.gz

indirdiğimiz bu easy-rsa’yı tar.gz dosyasından çıkartıyoruz.

tar xfz /tmp/easy_rsa

Gereken adımları takip ederek devam ediyorsunuz.

sudo mkdir /etc/openvpn/easy-rsa
sudo cp -rf easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa
sudo chown -R mertcan:mertcan /etc/openvpn/easy-rsa/

en önemli noktamıza geldik ayar dosyası oluşturmamız lazım ama önce yedek yapalım ve gereken yerlere dosyamızı taşıyalım

sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

hemen sonrasında yapacağımız şey dosyamızı açmak aşağıdaki çoğu işlemi bu dosya içerisinde yapacağız aklınızda olsun

nano /etc/openvpn/server.conf

açtığımızda karşımıza bir sürü satır gelecek değiştirmemiz gereken yer var dh diye bir satır göreceksiniz bunun ismini dh2048.pem yapıyoruz.

dh dh2048.pem

işlem bitiminde networkdeki tüm trafiği VPN yönlendirmemiz lazım ki bağlantı şifrelensin bunun için ise

push "redirect-gateway def1 bypass-dhcp"

hemen ardından DNS sunucularını değiştirmek lazım böylelikle işimiz biraz daha kolay olabilir DNS sorgularında sıkıntı çekmemiş oluruz ve birazda sorgularımız hızlanır

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

kullanıcımızı kimsesiz yapalım hemen

user nobody
group nobody
topology subnet
remote-cert-eku "TLS Web Client Authentication"

TLS auth için işlemlerimiz var bunları şu şekilde yapabilirsiniz server.conf içerisine eklemenizi yapınız.

tls-auth ta.key 0
tls-crypt auth_key.tlsauth

anahtarı oluşturalım

sudo openvpn --genkey --secret /etc/openvpn/auth_key.tlsauth

yukarıdaki yazanları server.conf dosyamıza kayıt ettikten yada gereken satırları yukarıdaki ayarlara göre değiştirip kayıt ettikten sonra bir sonraki aşamamıza geçebiliriz. Geçtiğimiz bu aşamada sisteme sertifika ürettiriyoruz böylelikle bağlantımız güzel bir şekilde güvenli ve şifreli hale gelecek.

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
nano /etc/openvpn/easy-rsa/vars

komutlarınının bitiminde vars nano aracılığı ile açmıştık. KEY_ ile başlayan bazı satırlar göreceksiniz orda onların hepsini kafanıza göre doldurun.yada doğru bilgilerinizi girin

. . .
export KEY_COUNTRY="TR"
export KEY_PROVINCE="TR"
export KEY_CITY="Ankara"
export KEY_ORG="mertcan"
export KEY_EMAIL="nobody@mertcangokgoz.com"
export KEY_OU="Community"
export KEY_NAME="server"
export KEY_CN=openvpn.umertcangokgoz.com
. . .

versiyonumuzu kaldıralım belli olmaz uyuşmazlık yapabilir belirli bir isim verelim

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

şimdi sertifikamızı tam olarak oluşturmaya geldi sıra

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh

yukarıdaki işlemlerin tamamlanması yaklaşık bi 3 dknızı alacaktır bu işlemlerin bitiminde oluşan dosyaları openvpn klasörü içerisine kopyalıyoruz.

cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

son olarak client tarafında ufak bi ayara

cd /etc/openvpn/easy-rsa
./build-key client

işlemimiz böylelikle kurulum aşamasında sonlanmış oluyor bundan sonra geriye yönlendirme ve yetkilendirme kaldı

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush

tertemiz bir firewall ayarlarına merhaba diyoruz ve yapmamız gerekenleri sırasıyla yapıyoruz ilk olarak ip aralıklarını firewall onaylatmak

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

yaptığımız bu onaylatma işlemini kayıt edelim ki sonra sıkıntı çıkartmasın başımıza

iptables-save > /etc/sysconfig/iptables

ip yönlendirmeyi açmamız lazım ipv4 için bunu da aşağıdakileri yaparak halledebilirsiniz.

nano /etc/sysctl.conf

aşağıdaki gibi yapıyoruz içerisindekini

net.ipv4.ip_forward = 1

ve bi restart atıyoruz network servisine

systemctl restart network.service

OpenVPN başlatmaya geldi sıra sabırla bu işlemleri yaptıysanız sona yaklaşmanıza az bir işlem kalmış demektir sabredin

systemctl -f enable openvpn@server.service
systemctl start openvpn@server.service

yukarıda clienti ayarlamaktan bahsetmiştim az bir kısmını yapmıştık şimdi onuda sonlandırmamız gerekiyor böylelikle bilgisayarımızdan bağlanabilelim VPN imize

Aşağıdakileri bir şekilde bilgisayarınıza kopyalayın bunu kullanırken SFTP ile yapabilirsiniz WinSCP önerilir.

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key

yukarıdakileri sisteminize kopyaladıktan sonra .ovpn dosyası oluşturmanız gerekiyor aşağıdaki yönergeyi takip ederek yapabilirsiniz.tek yapılacak olan dosya yollarını ve ip adresini belirleyip kaydetmek

client
dev tun
proto udp
remote sunucunuzun ip adresi 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca dosya yolu/ca.crt
cert dosya yolu/client.crt
key dosya yolu/client.key

hata almadan son aşamaya kadar geçebildiyseniz. Windows için OpenVPN kurmak ve yukarıda oluşturmuş olduğunuz .ovpn dosyasını C:Program FilesOpenVPNconfig yoluna atmak sonrasında programdan kolaylıkla bağlanabilirsiniz.

Sistem Uzmanı, Linux Hacısı, El-Kernel

“Centos 7 Üzerine OpenVPN Kurulumu” üzerine 24 yorum

  1. Mertcan bey selamlar.. Benim sormak istediğim hayati bir konu var.

    Web server olarak kullandığım Centos7 makinaya bu VPN yukarıda yazdığımız gibi kurulabilir mi?
    IP yönlendirmeleri falan var, biliyorsunuz. Server üzerinde çalışan internet sitelerine ulaşılamaz hale getirir mi diye tedirginim.

    Bir ikincisi, bu VPN’i kurduğumuzda sadece tek bir Browser üzerinden VPN’e bağlanabilme imkanımız var mı? Diğer Browser’lar kendi ISS’mden çalışacak şekilde..
    Bu iki meseleyi internette bir kaç gündür araştırıyorum, bir türlü bilgi edinemedim.

    Yanıtla
    • Merhaba

      Kurulabilir. Bir sorun ile karşılaşmazsınız maximum firewall tarafında sitenize giriş yapılamaz izin verdiğiniz taktirde o sorunda kalkar ancak yapacağınız şeyi kesinlikle önermiyorum. VPN bildiğiniz gibi gizllik için kullanılan bir yöntemdir. Web site arkasında aynı zamanda VPN kullanmak hoş olmaz.

      Benim size önerim sunucunuz üzerine proxy kurmanız böylelikle istediğiniz gibi tarayıcı üzerinden girmiş olursunuz. Diğer türlü VPNi direk olarak tarayıcıda kullanma diye birşey benim bildiğim yok

    • O halde hemen proxy kurulumu ile ilgili araştırmaya geçiyorum. İşin aslı çok fazla bilgiye sahip değilim. Bir türlü şu Linux’a giriş için kendime zaman tanımadım bu güne kadar. Ufak çaplı internet siteleri yapıyorum ama, arkaplanda neler olur, bir arıza çıkarsa ne yapmalıyım, hiç bilmem. Fena eksiklik..

      Açıkcası, aylardır Opera kullanıyorum gizlilik sözkonusu olduğunda ama, bazen çok fazla yavaşlayabiliyor. Plesk 12 VPN Eklentisini de aktif edip gerekli işlemleri yaptım. OpenVPN client bağlantısına kadar herşey okey. Bu sefer de ağ bağlantılarında oluşan yerel ağ bağlantısında Tanımlanamayan Ağ diyor. IP’leri manuel olarak atamaya vanrana kadar uğraştım ama, açıkcası en sonunda sabah 6’da ağlaya ağlaya vurdum kafayı yattım. :))

      Biraz da proxy ile cebelleşelim.

      Çok teşekkür ederim ilgilendiğiniz için.

    • Merhaba

      Keşke bana ulaşmayı deneseymişsiniz. Sorununuza çözüm getirmeye çalışırdık yönlenmeme sorunları genelde DNS ve firewall kaynaklı oluyor. Proxy olarakta Squid proxy kullanabilirsiniz. İşinizi oldukça görecektir. Ayrıca Linux konularında acele etmeyin bu bir süreç sorunları çözmeye çalışın çözemesenizde yılmayın.

      Çözülmeyen hiç bir şey yok ve olmazda 🙂

    • Tam şu anda Squit kurdum ve onu çalıştırmaya çalışıyordum. Zira eşşek herifin damadı, Job for squid.service failed because the control process exited with error code. diyor. 🙂 Neymiş, /usr/lib64/squid/ncsa_auth: (2) No such file or directory imiş..

      Halbuki rpm -ql squid | grep ncsa_auth yaptığımda bana bu yolu göstermişti. Google’da site: komutuyla arattım, sizde bunun kurulum makalesi yok. Ben de Zülfü Meh met ‘in blogunda yakalamıştım makaleyi.

      Neyse, cebelleşmeye devam. Murphy Kanunları’nı aşabilirsek ne ala.. 🙂

    • Merhaba

      Umarım sorununuzu çözdünüz ve kurabildiniz. Yol gene yanlış gözüküyor ama kontrol edin.

    • Merhaba! Yardımlarınızdan dolayı size teşekkür etmezsem kabalık etmiş olurum. Evet proxy’yi kurdum. Şifrelendirme ve güvenlik ayarları 4/4’lük oldu. Çok fazla umursanmayacak bir gecikme ile bağlanıyorum istediğim sayfaya. Cache ayarını açmadım bilerek. Server’a sürekli kayıt yapmasın diye. Sizin de dediğiniz gibi, aldığım hatada yol sorunu varmış. Yol da yaptık! (!) 😀

      Sağlıcakla kalın.. Çok teşekkürler..

    • Merhaba

      Asıl ben teşekkür ederim. Temiz anlatım ile isteklerinizi yakında yayınlayacağım. Kolay gelsin

    • Bu arada, ver12 Plesk’ten aktif edilen OpenVPN ile ilgili hiçbir şeyi kaldırmadım daha. Hatta şu an bile client OpenVPN bağlanabiliyor. XXXXXXX ip aresine bağlantı kuruldu diyor lakin DHCP ile ip almıyor sistemim ve Ağ bağlantısında Tanımlanamayan Ağ diyor.

      Plesk 12’nin oluşturduğu client’le bir süre bağlanamayınca plesk’in yardım forumlarında birisi gerçek OpenVPN client’i indirmeyi ve şifrelenmiş Key dosyası ile Config dosyasını buna nasıl import edebileceğini anlatmış. Faydalı oldu, bağlantı kurabildim ama, bir de amacına uygun bağlanmış olsa. Şu anda sadece görüntüde bağlıyım. Whatismyip ile baktığımda yine normal ip’mi görüyorum.

      Aslında bu konu ile ilgili de bir makale yazsanız Plesk kullanıcılarını bir hayli sevindirirsiniz. Çünkü Plesk VPN modülü ile ilgili hiçbir Türkçe Doküman yok.

    • Merhaba

      İstediğiniz üzere 1 adet Squid proxy ve 1 adette plesk server üzerinde VPN yapılandırması hakkında makale hazırlıyorum. İlerleyen günlerde yayınlamış olurum.

      Kolay Gelsin

  2. Merhaba, öncelikle emeğinize sağlık.
    Makalenizdeki gibi centos7 üzerine vpn sunucuyu kurdum çalışıyor. Ancak client kullanıcısı ile deneme yapmak istediğimde bağlantı sağlayamadım ve log dosyasında aşağıdaki uyarı mevcut. (Windows 10 işletim sistemi ile bağlantı deniyorum)
    acaba nerede hata yapmış olabilirim?

    WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.ht… for more info.

    Yanıtla
    • Merhaba

      Client için kullandığınız sertifikayı kontrol edin. Bbu bir bağlantı hatasıdır sertifika uyuşmadığında vermektedir. Özellikle son güncellemelerde openvpn çok değişti, kontrollerinizi sağlayıp yeni sertifika oluşturabilirsiniz gene hata alırsanız. İletin makaledeki parametrelerde değişiklik yapmamız gerekebilir.

  3. Merhaba, sizce şu anda aktif olarak apache mysql vb. için kullanılan yani bir sitenin yayınlandığı sunucuya openvpn kurmanın bir zararı vs olur mu sizce mantıklı mı?

    Yanıtla
    • Gizlilik açısından zararı olabilir, ancak onun dışında güvenlik vb bir sorun oluşacağını sanmam. Gizlilik sorun değilse kurabilirsiniz.

  4. Openvpn kurulumunu yaptım ve vpn bağlantısı kurabiliyorum. VPN bağlantısı kurduktan sonra internet bağlantısı kopuyor ve internete çıkış yapamıyorum. Bu durum ile ilgili bir öneriniz var mıdır?

    Yanıtla
    • VPN bağlandıktan sonra, bilgisayarınızdaki DNS ayarlarını kontrol edin. OpenVPN bilgisayarınızda kullanılacak olan DNS ayarını yapmamış olabilir.

  5. Merhaba Mertcan GÖKGÖZ,
    VPN server üzerinde çoklu kullanıcı oluşturmak ve birden fazla kullanıcının VPN sistemini kullanmasını istiyorum bunu nasıl yapabilirim?

    Yanıtla
    • Linux sistem üzerinde, yeni bir kullanıcı tanımlayıp yapılabilir. Kullanıcı alanlarını tanımlayıp auth aktif etmek gerekli internetten araştırmanızda fayda var.

Yorum yapın