Bu rehber, OpenVPN’in hem Ubuntu 22.04 hem de Rocky Linux işletim sistemlerinde hızlı ve sorunsuz bir şekilde kurulmasını sağlayacak adımları ve otomasyon scriptini içermektedir. Ayrıca, kurulum sonrası yapılandırmalar ve gereksinimler hakkında detaylı bilgiler sunulmaktadır.
1. Gereksinimler
- İşletim Sistemi:
- Ubuntu 22.04 LTS
- Rocky Linux 8 veya 9
- Donanım:
- Minimum 1 GB RAM (2 GB önerilir)
- 10 GB disk alanı
- Yazılım:
- Root erişimi veya sudo yetkisi
- Internet bağlantısı
2. Kurulum Scripti
Aşağıdaki bash scripti, OpenVPN’in hem Ubuntu 22.04 hem de Rocky Linux üzerinde otomatik olarak kurulmasını sağlar. Script, işletim sistemini algılar ve gerekli adımları uygular.
#!/bin/bash
# OpenVPN Kurulum Scripti
# Desteklenen Sistemler: Ubuntu 22.04, Rocky Linux 8/9
# Renkli Çıktılar için Değişkenler
GREEN='33[0;32m'
NC='33[0m' # No Color
# İşletim Sistemi Tespiti
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VER=$VERSION_ID
else
echo "İşletim sistemi tespit edilemedi."
exit 1
fi
# Güncellemeleri Yap
update_system() {
echo -e "${GREEN}Sistem güncelleniyor...${NC}"
if [[ "$OS" == "ubuntu" ]]; then
sudo apt update && sudo apt upgrade -y
elif [[ "$OS" == "rocky" ]]; then
sudo dnf update -y
else
echo "Desteklenmeyen işletim sistemi."
exit 1
fi
echo -e "${GREEN}Sistem güncellemeleri tamamlandı.${NC}"
}
# OpenVPN ve Gereksinimlerin Kurulumu
install_dependencies() {
echo -e "${GREEN}Gerekli paketler kuruluyor...${NC}"
if [[ "$OS" == "ubuntu" ]]; then
sudo apt install -y openvpn easy-rsa ufw
elif [[ "$OS" == "rocky" ]]; then
sudo dnf install -y epel-release
sudo dnf install -y openvpn easy-rsa firewalld
fi
echo -e "${GREEN}Gerekli paketler kuruldu.${NC}"
}
# Sertifika Otoritesi (CA) Oluşturma
setup_ca() {
echo -e "${GREEN}Sertifika Otoritesi (CA) kuruluyor...${NC}"
make-cadir ~/openvpn-ca
cd ~/openvpn-ca || exit
# Varsayılan varsayılanları kullanabilirsiniz veya ihtiyaçlarınıza göre düzenleyin
./easyrsa init-pki
./easyrsa build-ca nopass
echo -e "${GREEN}CA kurulumu tamamlandı.${NC}"
}
# Sunucu Sertifikası ve Anahtarının Oluşturulması
setup_server_cert() {
echo -e "${GREEN}Sunucu sertifikası ve anahtarı oluşturuluyor...${NC}"
./easyrsa gen-req server nopass
./easyrsa sign-req server server
echo -e "${GREEN}Sunucu sertifikası ve anahtarı oluşturuldu.${NC}"
}
# Diffie-Hellman Parametrelerinin Oluşturulması
setup_dh() {
echo -e "${GREEN}Diffie-Hellman parametreleri oluşturuluyor...${NC}"
./easyrsa gen-dh
echo -e "${GREEN}Diffie-Hellman parametreleri oluşturuldu.${NC}"
}
# Müşteri Sertifikası ve Anahtarının Oluşturulması
setup_client_cert() {
echo -e "${GREEN}Müşteri sertifikası ve anahtarı oluşturuluyor...${NC}"
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
echo -e "${GREEN}Müşteri sertifikası ve anahtarı oluşturuldu.${NC}"
}
# OpenVPN Sunucu Yapılandırması
configure_openvpn() {
echo -e "${GREEN}OpenVPN yapılandırması yapılıyor...${NC}"
sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
# OpenVPN Sunucu Konfigürasyon Dosyasını Oluşturma
sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'
echo -e "${GREEN}OpenVPN yapılandırması tamamlandı.${NC}"
}
# Firewall Ayarları
configure_firewall() {
echo -e "${GREEN}Firewall ayarları yapılıyor...${NC}"
if [[ "$OS" == "ubuntu" ]]; then
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
elif [[ "$OS" == "rocky" ]]; then
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-service=openvpn --permanent
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
fi
echo -e "${GREEN}Firewall ayarları tamamlandı.${NC}"
}
# IP Yönlendirme ve NAT Ayarları
configure_ip_forwarding() {
echo -e "${GREEN}IP yönlendirme ve NAT ayarları yapılıyor...${NC}"
sudo bash -c 'echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf'
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.rules
sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOL'
sudo systemctl enable iptables
sudo systemctl start iptables
echo -e "${GREEN}IP yönlendirme ve NAT ayarları tamamlandı.${NC}"
}
# OpenVPN Servisini Başlatma ve Etkinleştirme
start_enable_openvpn() {
echo -e "${GREEN}OpenVPN servisi başlatılıyor ve etkinleştiriliyor...${NC}"
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
echo -e "${GREEN}OpenVPN servisi çalışıyor ve sistem açılışında otomatik olarak başlayacak.${NC}"
}
# Müşteri Yapılandırma Dosyasını Oluşturma
create_client_config() {
echo -e "${GREEN}Müşteri yapılandırma dosyası oluşturuluyor...${NC}"
mkdir -p ~/client-configs/keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/
# OpenVPN Client Konfigürasyon Dosyası
cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL
echo -e "${GREEN}Müşteri yapılandırma dosyası oluşturuldu.${NC}"
echo -e "${GREEN}client1.ovpn dosyasını oluşturmak için aşağıdaki komutları çalıştırın:${NC}"
echo "cd ~/client-configs && bash make_config.sh client1"
}
# Ana Kurulum Fonksiyonu
main() {
update_system
install_dependencies
setup_ca
setup_server_cert
setup_dh
setup_client_cert
configure_openvpn
configure_firewall
configure_ip_forwarding
start_enable_openvpn
create_client_config
echo -e "${GREEN}OpenVPN kurulumu başarıyla tamamlandı!${NC}"
echo -e "${GREEN}client1.ovpn dosyasını almak için lütfen ilgili adımları takip edin.${NC}"
}
# Scripti Başlat
main
Script Kullanımı:
- Scripti İndirme ve Çalıştırma:
- Yukarıdaki scripti bir dosyaya kaydedin, örneğin
install_openvpn.sh
. - Dosyaya çalıştırma izinleri verin:
chmod +x install_openvpn.sh
- Scripti çalıştırın:
sudo ./install_openvpn.sh
- **Müşteri Yapılandırma Dosyasını Oluşturma:**Scriptin son adımında, müşteri konfigürasyon dosyasını oluşturmanız için gerekli komutlar verilecektir. Aşağıdaki adımları takip edin:
make_config.sh
scriptini oluşturun:
mkdir -p ~/client-configs/files
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash
# Müşteri Konfigürasyon Dosyası Oluşturma Scripti
KEY_DIR=~/client-configs/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}/client1.crt
<(echo -e '</cert>n<key>')
${KEY_DIR}/client1.key
<(echo -e '</key>')
> ${OUTPUT_DIR}/client1.ovpn
EOF
- Scripti çalıştırma:
chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh
client1.ovpn
dosyasını~/client-configs/files/
dizininde bulabilirsiniz. Bu dosyayı OpenVPN istemcisine yükleyerek bağlantıyı gerçekleştirebilirsiniz.
3. Ubuntu 22.04 Üzerinde OpenVPN Kurulumu
Adım 1: Sistem Güncellemeleri
sudo apt update
sudo apt upgrade -y
Adım 2: OpenVPN ve Easy-RSA Kurulumu
sudo apt install -y openvpn easy-rsa ufw
Adım 3: Sertifika Otoritesi (CA) Oluşturma
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca nopass
Adım 4: Sunucu Sertifikası ve Anahtarının Oluşturulması
./easyrsa gen-req server nopass
./easyrsa sign-req server server
Adım 5: Diffie-Hellman Parametrelerinin Oluşturulması
./easyrsa gen-dh
Adım 6: Müşteri Sertifikası ve Anahtarının Oluşturulması
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Adım 7: OpenVPN Sunucu Yapılandırması
sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'
Adım 8: Firewall Ayarları
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Adım 9: IP Yönlendirme ve NAT Ayarları
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.rules
sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOL'
sudo systemctl enable iptables
sudo systemctl start iptables
Adım 10: OpenVPN Servisinin Başlatılması ve Etkinleştirilmesi
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Adım 11: Müşteri Yapılandırma Dosyasını Oluşturma
mkdir -p ~/client-configs/keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/
cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL
# make_config.sh scriptini oluşturun
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash
# Müşteri Konfigürasyon Dosyası Oluşturma Scripti
KEY_DIR=~/client-configs/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}/client1.crt
<(echo -e '</cert>n<key>')
${KEY_DIR}/client1.key
<(echo -e '</key>')
> ${OUTPUT_DIR}/client1.ovpn
EOF
chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh
4. Rocky Linux Üzerinde OpenVPN Kurulumu
Adım 1: Sistem Güncellemeleri
sudo dnf update -y
Adım 2: OpenVPN ve Easy-RSA Kurulumu
sudo dnf install -y epel-release
sudo dnf install -y openvpn easy-rsa firewalld
Adım 3: Sertifika Otoritesi (CA) Oluşturma
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca nopass
Adım 4: Sunucu Sertifikası ve Anahtarının Oluşturulması
./easyrsa gen-req server nopass
./easyrsa sign-req server server
Adım 5: Diffie-Hellman Parametrelerinin Oluşturulması
./easyrsa gen-dh
Adım 6: Müşteri Sertifikası ve Anahtarının Oluşturulması
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Adım 7: OpenVPN Sunucu Yapılandırması
sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
sudo bash -c 'cat > /etc/openvpn/server.conf <<EOL
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOL'
Adım 8: Firewall Ayarları
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-service=openvpn --permanent
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Adım 9: IP Yönlendirme ve NAT Ayarları
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.rules
sudo bash -c 'cat > /etc/systemd/system/iptables.service <<EOL
[Unit]
Description=Load iptables rules
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables.rules
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOL'
sudo systemctl enable iptables
sudo systemctl start iptables
Adım 10: OpenVPN Servisinin Başlatılması ve Etkinleştirilmesi
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Adım 11: Müşteri Yapılandırma Dosyasını Oluşturma
mkdir -p ~/client-configs/keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys/
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys/
cat > ~/client-configs/base.conf <<EOL
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
verb 3
EOL
# make_config.sh scriptini oluşturun
cat > ~/client-configs/make_config.sh <<'EOF'
#!/bin/bash
# Müşteri Konfigürasyon Dosyası Oluşturma Scripti
KEY_DIR=~/client-configs/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}/client1.crt
<(echo -e '</cert>n<key>')
${KEY_DIR}/client1.key
<(echo -e '</key>')
> ${OUTPUT_DIR}/client1.ovpn
EOF
chmod +x ~/client-configs/make_config.sh
~/client-configs/make_config.sh
5. Kurulum Sonrası Adımlar
- OpenVPN’e Erişim:
client1.ovpn
dosyasını OpenVPN istemcisine yükleyin (Windows, macOS, Linux, Android, iOS vb.).- OpenVPN istemcisini açın ve
client1.ovpn
dosyasını içe aktarın. - Bağlantıyı başlatın.
- Sunucu Durumunu Kontrol Etme:
sudo systemctl status openvpn@server
- Servisin aktif ve çalışır durumda olduğundan emin olun.
- Log Dosyalarını İnceleme:
sudo tail -f /var/log/openvpn-status.log
- Bağlantı durumlarını ve olası hataları kontrol edebilirsiniz.
6. OpenVPN’e Erişim ve İlk Ayarlar
- Müşteri Yapılandırma Dosyası (client1.ovpn):
- Bu dosya, OpenVPN istemcisine yüklenerek VPN bağlantısını gerçekleştirmek için kullanılır.
- Güvenli bir şekilde istemci cihazınıza aktarın.
- Güvenlik Duvarı ve NAT Ayarları:
- Sunucuya gelen OpenVPN trafiğinin izinlendiğinden ve NAT işlemlerinin doğru yapılandırıldığından emin olun.
- DNS Ayarları:
- OpenVPN yapılandırmasında belirtilen DNS sunucuları (8.8.8.8 ve 8.8.4.4) istemcilerin DNS sorgularını güvenli bir şekilde çözmesini sağlar.
7. Güvenlik ve Bakım İpuçları
- Sertifikaların Güvenliği:
- CA, sunucu ve müşteri sertifikalarını güvenli bir yerde saklayın.
- Özel anahtarları (server.key, client1.key) kesinlikle paylaşmayın.
- Düzenli Güncellemeler:
- OpenVPN ve işletim sistemi paketlerini düzenli olarak güncelleyin.
- Güvenlik yamalarını takip edin.
- Firewall ve Güvenlik Duvarı Ayarları:
- Gereksiz portları kapalı tutun.
- Yalnızca gerekli servislerin erişimine izin verin.
- Log Yönetimi:
- Log dosyalarını düzenli olarak kontrol edin.
- Şüpheli aktiviteleri tespit etmek için logları izleyin.
- Kullanıcı Yönetimi:
- Müşteri sertifikalarını gerektiğinde iptal edin.
- Yeni kullanıcılar eklerken ve mevcut kullanıcıları kaldırırken dikkatli olun.
Cpynet üyeleri için faydalı olması dileğiyle!
Not: YOUR_SERVER_IP
ifadesini, OpenVPN sunucunuzun gerçek IP adresiyle değiştirmeyi unutmayın. Ayrıca, müşteri sertifikalarını oluştururken güvenlik önlemlerine dikkat edin ve sertifikaları güvenli bir şekilde dağıtın.
Herhangi bir sorunla karşılaşırsanız, OpenVPN Resmi Dokümantasyonu üzerinden detaylı bilgi alabilirsiniz.