Not: Bu anlatım aşağıdaki kaynak aracılıyla hazırlanmıştır.
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04
1. Sistemin güncellenmesi ve gerekli paketlerin kurulması:apt-get update && apt-get upgrade
apt-get install openvpn easy-rsa
2. CA değişkenlerini yapılandırılması:make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars
Açılan dosyada aşağıdaki kısımları örnekteki gibi doldurmalısınız.
Alıntı Yap...
export KEY_COUNTRY="TR"
export KEY_PROVINCE="TR"
export KEY_CITY="Izmir"
export KEY_ORG="asd"
export KEY_EMAIL="asd@hotmail.com"
export KEY_OU="asd"
...
Ayrıca aşağıdaki ifadeyi düzeltmelisiniz.
Alıntı Yapexport KEY_NAME="server"
Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz.
3. CA' nın inşaa edilmesi:source vars
./clean-all
./build-ca
Burada çıkan her şeye
"enter" yapmalısınız.
4. Sunucu sertifikası ve şifreleme dosyalarının oluşturulması:./build-key-server server
burada aşağıdaki kısımlar hariç
"enter" yapıyoruz. Aşağıda çıkan sorulara
y, yani evet diyoruz. Eğer doğru yaparsanız
"Data Base Updated" yazmalıdır.
Alıntı Yap...
Certificate is to be certified until Oct 3 19:07:25 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
5../build-dh
openvpn --genkey --secret keys/ta.key
source vars
./build-key client1
burada da aşağıdaki kısımlar hariç
"enter" yapıyoruz. Aşağıda çıkan sorulara
y, yani evet diyoruz. Eğer doğru yaparsanız
"Data Base Updated" yazmalıdır.
Alıntı Yap...
Certificate is to be certified until Oct 3 19:15:25 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
6. Gerekli dosyaların OpenPVN klasörüne kopyalanması:cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
7. OpenVPN'in yapılandırılması:nano /etc/openvpn/server.conf
Dosya içerisinde
";tls-auth ta.key 0 # This file is secret" ifadesini bulun ve başındaki
";" i silin ve alt satırına
"key-direction 0" ifadesini ekleyin. İşlem bittiğinde aşağıdaki gibi olmalıdır.
Alıntı Yap...
tls-auth ta.key 0 # This file is secret
key-direction 0
...
Ardından
";cipher AES-128-CBC" i bulun ve başındaki
";" i silin. Alt satırına
"auth SHA256" ifadesini ekleyin. İşlem bittiğinde aşağıdaki gibi olmalıdır.
Alıntı Yap...
;cipher BF-CBC # Blowfish (default)
cipher AES-128-CBC # AES
auth SHA256
;cipher DES-EDE3-CBC # Triple-DES
...
Daha sonra
";user nobody" ve
";group nogroup" ifadelerini bulun ve başlarındaki
";" i silin işlem bittiğinde aşağıdaki gibi olmalıdır.
Alıntı Yap...
user nobody
gruop nogroup
...
Bu işlem de bittikten sonra DNS ayarlaması için
"redirect-gateway" ve
"dhcp-option" ifadelerini bulun ve başlarındaki
";" silin. İşlem bittikten sonra aşağıdaki gibi olmalıdır.
Alıntı Yap...
push "redirect-gateway def1 bypass-dhcp"
...
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
...
Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz.
8. Sunucu ağının yapılandırılması:nano /etc/sysctl.conf
Dosya içerisinde
"#net.ipv4.ip_forward=1" bulun ve başındaki
"#" ifadesini silin. Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz. Ardından aşağıdaki komutu yürütün.
nano /etc/ufw/before.rules
Dosya aşağıdaki gibi yapın.
Alıntı Yap#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz.
Daha sonra aşağıdaki komutu yürütün
nano /etc/default/ufw
Bu dosyada
"DEFAULT_FORWARD_POLICY="DROP"" ifadesini bulun ve aşağıdaki gibi değiştirin. Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz.
Alıntı YapDEFAULT_FORWARD_POLICY="ACCEPT"
UFW'den gerekli izini verelim
ufw allow 1194/udp
ufw disable
ufw enable
9. OpenVPN' in başlatılması systemctl start openvpn@server
systemctl statusopenvpn@server
Eğer
Active: active (running) yazısını görüyorsanız sorunsuzca buraya kadar gelmişsiniz demektir.
q tuşu ile oradan çıkabilirsiniz.
tun0 ı kontrol etmek için aşağıdaki komutu yürütün.
ip addr show tun0
bu sonuç çıkmalıdır.
Alıntı Yap4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
Her şey yolunda olduğuna göre
OpenVPN i çalıştırabiliriz
systemctl enable openvpn@server
10. client' in ayarlanmasımkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Ardından aşağıdaki komutu yürütün
nano ~/client-configs/base.conf
ve
"remote server_IP_address 1194" ifadesini bulup, ilgili yere sunucu ip adresinizi yazın.
Ardından
";user nobody" ve
";group nogroup" ifadelerini bulup ";" i silin. İşlem sonrası aşağıdaki gibi olmalıdır.
Alıntı Yap...
user nobody
group nogroup
...
Daha sonra
"ca ca.crt" ,
"cert client.crt" ,
"key client.key" ifadelerini bulup aşağıdaki gibi yapın. Alt satıra aşağıdaki ifadesini ekleyin. Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz.
Alıntı Yap...
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
key-direction 1
cipher AES-128-CBC
auth SHA256
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
nano ~/client-configs/make_config.sh
Aşağıdaki yazıyı dosya içerisine yapıştırın.
Alıntı Yap#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Ardından
"ctrl + o" tuşları ile kayıt edip
"ctrl + x" tuşları ile dosyadan çıkabilirsiniz. Dosyanın gerekli izinlerini ayarlamak için aşağıdaki komutu yürütün.
chmod 700 ~/client-configs/make_config.sh
11. client' in oluşturulmasıcd ~/client-configs
./make_config.sh client1
Eğer her şey sorunsuz gittiyse
"~/client-configs/files" dizini altında
client1.ovpn dosyası oluşmuş olmalı. Bu dosyayı sunucunuzdan indirip bağlanmak için kullanmalısınız.
Alıntı yapılan: sbaba - 04 Şubat 2017 - 19:43:51
hangi komutla ineceğini yazsanız çok iyi olacaktı...
önce sunucuya sftp ile bağlanmalısınız (not: eğer root değilde başka bir kullanıcı ekleyip kullanıyorsanız onu yazmalısınız):
sftp root@ipadresiniz
cd ~/client-configs/files
get client1.ovpn
Hocam çok basit ve akıcı şekilde anlatmışsınız teşekkürler. Yalnız yeni kurulmuş bir 16.04'e işlemleri gerçekleştirdikten sonra cep telefonu yada local haricindeki başka bir istemci bilgisayar ile bağlanmaya çalıştığımda bağlantıyı sağlayabiliyor fakat internet çıkışı alamıyorum. Firewall üzerinden gerekli izinleri hali hazırda işlemler sırasında zaten veriyoruz. Makina yeni kurulduğu için başka çalışan ve bloke edecek aplikasyon da bulunmamaktadır. Bunun ile ilgili bir çözüm öneriniz var mıdır?
Ps. işlem yapılan makine router üzerinden DMZ olarak atanmıştır.