Debian 7'de OpenVPN Sunucu ve İstemci Kurulumu ve Konfigürasyonu


Bu makalede, Debian Linux kullanılarak OpenVPN üzerinde IPv6 bağlantısının nasıl elde edileceği ayrıntılarıyla anlatılmaktadır. İşlem, sunucu olarak IPv6 bağlantısına sahip bir KVM VPS'de ve bir Debian 7 masaüstünde Debian 7 üzerinde test edilmiştir. Komutlar root olarak çalıştırılacaktır.

OpenVPN nedir?

OpenVPN, güvenli, şifreli VPN bağlantıları oluşturmak, İnternet trafiğinizi yönlendirmek ve böylece gözetlemeyi önlemek için SSL/TLS kullanan bir VPN programıdır. Open VPN, güvenlik duvarlarından şeffaf bir şekilde geçme konusunda oldukça yeteneklidir. Aslında, durum gerektiriyorsa, onu HTTPS (443) ile aynı TCP bağlantı noktasında çalıştırarak trafiği ayırt edilemez ve dolayısıyla engellenmesi neredeyse imkansız hale getirebilirsiniz.

OpenVPN, istemcilerin sunucuda kimlik doğrulaması yapmasına olanak sağlamak için önceden paylaşılan gizli anahtarlar, sertifikalar veya kullanıcı adları/şifreler gibi çeşitli yöntemleri kullanabilir. OpenVPN, OpenSSL protokolünü kullanır ve sorgulama yanıtı kimlik doğrulaması, tek oturum açma özelliği, yük dengeleme ve yük devretme özellikleri ve çoklu arka plan programı desteği gibi birçok güvenlik ve kontrol özelliğini uygular.

Neden OpenVPN'i kullanmalısınız?

Güvenli iletişimi düşünün – OpenVPN'i düşünün. İnternet trafiğinizi kimsenin gözetlemesini istemiyorsanız, tüm trafiğinizi yüksek düzeyde şifrelenmiş, güvenli bir tünel üzerinden yönlendirmek için OpenVPN kullanın.

Bu, özellikle havalimanlarındaki ve diğer yerlerdeki halka açık WiFi ağlarına bağlanırken önemlidir. Trafiğinizi kimin gözetlediğinden asla emin olamazsınız. Gözetlemeyi önlemek için trafiğinizi kendi OpenVPN sunucunuz üzerinden yönlendirebilirsiniz.

Tüm trafiğinizi rutin olarak izleyen ve web sitelerini istediğiniz zaman engelleyen ülkelerden birindeyseniz, OpenVPN'i HTTPS trafiğinden ayırt edilemez hale getirmek için 443 TCP bağlantı noktası üzerinden kullanabilirsiniz. Hatta OpenVPN imzalarını tanımlayabilecek Derin Paket İnceleme tekniklerini yenmek için OpenVPN trafiğinizi bir SSL tüneli üzerinden tünellemek gibi diğer güvenlik stratejileriyle bile birleştirebilirsiniz.

sistem gereksinimleri

OpenVPN'in çalışması çok az gereksinim gerektirir. OpenVPN'i çalıştırmak için 64 MB RAM ve 1 GB HDD alanı olan bir sistem yeterlidir. OpenVPN neredeyse tüm ana işletim sistemlerinde çalışır.

Debian 7'de OpenVPN Kurulumu ve Yapılandırması

OpenVPN'i Ana Sunucuya yükleyin

OpenVPN'i yüklemek için aşağıdaki komutu çalıştırın.

apt-get install openvpn

Easy-rsa komut dosyaları varsayılan olarak '/usr/share/easy-rsa/' dizini altına yüklenir. Bu nedenle, bu komut dosyalarını istenen konuma, yani /root/easy-rsa'ya kopyalamamız gerekiyor.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

CA Sertifikası ve CA Anahtarı Oluşturun

vars’ dosyasını açın ve aşağıdaki değişiklikleri yapın ancak değişiklik yapmadan önce orijinal dosyanın yedeğini almanızı öneririm.

cp vars{,.orig}

Metin düzenleyicinizi kullanarak easy-rsa için varsayılan değerleri ayarlayın. Örneğin.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Burada 4096 bitlik bir anahtar kullanıyorum. İsteğinize göre 1024, 2048, 4096 veya 8192 bit anahtarını kullanabilirsiniz.

Komutu çalıştırarak varsayılan değerleri dışarı aktarın.

source ./vars

Daha önce oluşturulmuş tüm sertifikaları temizleyin.

./clean-all

Daha sonra CA sertifikası ve CA anahtarı oluşturmak için aşağıdaki komutu çalıştırın.

./build-ca

Komutu çalıştırarak sunucu sertifikasını oluşturun. 'Sunucu adını' sunucu adınızla değiştirin.

./build-key-server server-name

Diffie Hellman PEM sertifikasını oluşturun.

./build-dh

İstemci sertifikasını oluşturun. 'Müşteri adını' müşteri adınızla değiştirin.

./build-key client-name

HMAC kodunu oluşturun.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Sertifikaları istemci ve sunucu makinelerine aşağıdaki gibi kopyalayın.

  1. ca.crt dosyasının hem istemcide hem de sunucuda mevcut olduğundan emin olun.
  2. ca.key anahtarı istemcide olmalıdır.
  3. Sunucu için server.crt, dh4096.pem, server.key ve ta.key gerekir.
  4. client.crt, client.key ve ta.key istemcide olmalıdır.

Sunucudaki anahtarları ve sertifikaları ayarlamak için komutları çalıştırın.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

OpenVPN Sunucusunu Yapılandırma

Artık OpenVPN sunucusunu yapılandırmanız gerekiyor. '/etc/openvpn/server.conf' dosyasını açın. Lütfen değişiklikleri aşağıda açıklandığı şekilde yapın.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.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 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Sunucuda IP iletmeyi etkinleştirin.

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

OpenVPN'i önyüklemede başlayacak şekilde ayarlamak için aşağıdaki komutu çalıştırın.

update-rc.d -f openvpn defaults

OpenVPN hizmetini başlatın.

service openvpn restart

İstemciye OpenVPN'i yükleyin

OpenVPN'i istemci makineye yüklemek için aşağıdaki komutu çalıştırın.

apt-get install openvpn

Bir metin düzenleyici kullanarak, istemcide '/etc/openvpn/client.conf' konumunda OpenVPN istemci yapılandırmasını ayarlayın. Örnek bir konfigürasyon aşağıdaki gibidir:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

OpenVPN'i önyüklemede başlayacak şekilde ayarlamak için aşağıdaki komutu çalıştırın.

update-rc.d -f openvpn defaults

İstemcide OpenVPN hizmetini başlatın.

service openvpn restart

OpenVPN'in IPv4 üzerinde iyi çalıştığından emin olduktan sonra, IPv6'nın OpenVPN üzerinde çalışmasını nasıl sağlayacağınız aşağıda açıklanmıştır.

IPv6'nın Sunucuda OpenVPN ile çalışmasını sağlama

Sunucu yapılandırması '/etc/openvpn/server.conf' dosyasının sonuna aşağıdaki satırları ekleyin.

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Bu iki komut dosyası, bir istemci her bağlandığında/bağlantısı kesildiğinde IPv6 tünelini oluşturur/yok eder.

İşte client-connect.sh'nin içeriği.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Ana makinem bana 2a00:dd80:003d:000c::/64 bloğundan IPV6 adresleri atıyor. Bu nedenle
kullanıyorum BASERANGE olarak 2a00:dd80:003d:000c. Bu değeri, sunucunuzun size atadığı değere göre değiştirin.

Bir istemci OpenVPN'e her bağlandığında, bu komut dosyası 2a00:dd80:003d:000c:1001::1 adresini tap0<'ın IPV6 adresi olarak atar. sunucunun arayüzü.

Son satırda tünelimiz için Komşu Keşfi kuruluyor. İstemci tarafı tap0 bağlantısının IPv6 adresini proxy adresi olarak ekledim.

İşte client-disconnect.sh'nin içeriği.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Bu, istemcinin bağlantısı kesildiğinde sunucunun IPv6 tünel adresini siler. BASERANGE değerini uygun şekilde değiştirin.

Komut dosyalarını yürütülebilir hale getirin.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Aşağıdaki girişleri '/etc/rc.local' dosyasına ekleyin (Uygun sysctl'leri /etc/sysctl.conf dosyasında da değiştirebilirsiniz).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Bu girişler Komşu Keşfi ve İletimi etkinleştirir. Ayrıca bir güvenlik duvarı da ekledim.

'/etc/init.d/firewall' dosyasını oluşturun ve aşağıdaki içeriği ekleyin.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

'/etc/rc.local' komutunu çalıştırın ve güvenlik duvarını başlatın.

sh /etc/rc.local

Bu, sunucu tarafındaki değişiklikleri tamamlar.

IPv6'nın İstemcide OpenVPN ile çalışmasını sağlama

Aşağıdakini istemci yapılandırma dosyanız '/etc/openvpn/client.conf'un son satırlarına ekleyin.

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Yukarı ve aşağı komut dosyaları, bir istemci OpenVPN sunucusuna her bağlandığında/bağlantısını kestiğinde istemci tap0 bağlantısının IPV6 istemci uç noktalarını oluşturur/yok eder.

İşte up.sh'nin içeriği.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

Komut dosyası, 2a00:dd80:3d:c:1001::2 IPV6 adresini istemci IPV6 adresi olarak atar ve sunucu üzerinden varsayılan IPV6 yolunu ayarlar.

Sunucu yapılandırmasında IPV6BASE'i BASERANGE ile aynı olacak şekilde değiştirin.

İşte down.sh'nin içeriği.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Bu yalnızca istemcinin IPV6 adresini siler ve istemci sunucuyla bağlantısını kestiğinde IPV6 yolunu yırtar.

Sunucu yapılandırmasında IPV6BASE'i BASERANGE ile aynı olacak şekilde değiştirin ve komut dosyasını yürütülebilir hale getirin.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

İsteğe bağlı olarak '/etc/resolv.conf' dosyasını değiştirin ve DNS çözümlemesi için Google'ın IPV6 ad sunucularını ekleyin.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Sunucuda openvpn'yi yeniden başlatın ve ardından istemciden ona bağlanın. Bağlanmalısınız. OpenVPN üzerinden IPV6 bağlantınızın çalıştığını görmek için test-ipv6.com adresini ziyaret edin.

Referans Bağlantıları

OpenVPN Ana Sayfası

Kaynak: stavrovski