Instalasi dan Konfigurasi Server OpenVPN dan Klien di Debian 7


Artikel ini merinci cara mendapatkan konektivitas IPv6 di OpenVPN menggunakan Debian Linux. Prosesnya telah diuji pada Debian 7 pada KVM VPS dengan konektivitas IPv6 sebagai server, dan desktop Debian 7. Perintah harus dijalankan sebagai root.

Apa itu OpenVPN?

OpenVPN adalah program VPN yang menggunakan SSL/TLS untuk membuat koneksi VPN terenkripsi dan aman, untuk merutekan lalu lintas Internet Anda, sehingga mencegah pengintaian. Open VPN sangat mampu melintasi firewall secara transparan. Faktanya, jika situasinya memerlukannya, Anda dapat menjalankannya pada port TCP yang sama dengan HTTPS (443), membuat lalu lintas tidak dapat dibedakan dan karenanya hampir tidak mungkin untuk diblokir.

OpenVPN dapat menggunakan berbagai metode seperti kunci rahasia yang dibagikan sebelumnya, sertifikat, atau nama pengguna/kata sandi, untuk memungkinkan klien mengautentikasi ke server. OpenVPN menggunakan protokol OpenSSL dan mengimplementasikan banyak fitur keamanan dan kontrol seperti otentikasi respons tantangan, kemampuan sistem masuk tunggal, penyeimbangan beban dan fitur failover serta dukungan multi daemon.

Mengapa menggunakan OpenVPN?

Pikirkan komunikasi yang aman – pikirkan OpenVPN. Jika Anda tidak ingin orang lain mengintip lalu lintas internet Anda, gunakan OpenVPN untuk merutekan semua lalu lintas Anda melalui terowongan yang sangat terenkripsi dan aman.

Hal ini sangat penting ketika menghubungkan ke jaringan WIFI publik di bandara dan tempat lain. Anda tidak pernah bisa yakin siapa yang mengintip lalu lintas Anda. Anda dapat menyalurkan lalu lintas Anda melalui server OpenVPN Anda sendiri untuk mencegah pengintaian.

Jika Anda berada di salah satu negara yang secara rutin memantau semua lalu lintas dan memblokir situs web sesuka hati, Anda dapat menggunakan OpenVPN melalui port TCP 443, agar tidak dapat dibedakan dari lalu lintas HTTPS. Anda bahkan dapat menggabungkan OpenVPN dengan strategi keamanan lainnya seperti menyalurkan lalu lintas OpenVPN Anda melalui terowongan SSL, untuk mengalahkan teknik Inspeksi Paket Mendalam yang mungkin dapat mengidentifikasi tanda tangan OpenVPN.

Persyaratan sistem

OpenVPN memerlukan persyaratan yang sangat minimal untuk dijalankan. Sistem dengan RAM 64 MB dan ruang HDD 1 GB sudah cukup untuk menjalankan OpenVPN. OpenVPN berjalan di hampir semua Sistem Operasi utama.

Instalasi dan Konfigurasi OpenVPN di Debian 7

Instal OpenVPN di Server Utama

Jalankan perintah berikut untuk menginstal OpenVPN.

apt-get install openvpn

Secara default, skrip easy-rsa diinstal di bawah direktori ‘/usr/share/easy-rsa/‘. Jadi, kita perlu menyalin skrip ini ke lokasi yang diinginkan yaitu /root/easy-rsa.

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

Hasilkan Sertifikat CA dan Kunci CA

Buka file 'vars' dan lakukan perubahan berikut, namun sebelum melakukan perubahan saya menyarankan Anda untuk membuat cadangan file asli.

cp vars{,.orig}

Dengan menggunakan editor teks Anda, atur nilai default untuk easy-rsa. Misalnya.

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

Di sini, saya menggunakan kunci bit 4096. Anda dapat menggunakan kunci bit 1024, 2048, 4096 atau 8192 sesuai keinginan.

Ekspor nilai default dengan menjalankan perintah.

source ./vars

Bersihkan semua sertifikat yang dibuat sebelumnya.

./clean-all

Selanjutnya, jalankan perintah berikut untuk menghasilkan sertifikat CA dan kunci CA.

./build-ca

Hasilkan sertifikat server dengan menjalankan perintah. Gantikan 'nama server' dengan nama server Anda.

./build-key-server server-name

Hasilkan sertifikat Diffie Hellman PEM.

./build-dh

Hasilkan sertifikat klien. Gantikan 'nama klien' dengan nama klien Anda.

./build-key client-name

Hasilkan kode HMAC.

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

Salin sertifikat ke mesin klien dan server sebagai berikut.

  1. Pastikan ca.crt ada di klien dan server.
  2. Kunci ca.key harus ada di klien.
  3. Server memerlukan server.crt, dh4096.pem, server.key dan ta.key.
  4. client.crt, client.key dan ta.key harus ada di klien.

Untuk menyiapkan kunci dan sertifikat di server, jalankan perintah.

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/

Mengonfigurasi Server OpenVPN

Sekarang Anda perlu mengkonfigurasi server OpenVPN. Buka file '/etc/openvpn/server.conf'. Silakan lakukan perubahan seperti yang dijelaskan di bawah ini.

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

Aktifkan penerusan IP di server.

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

Jalankan perintah berikut untuk mengatur OpenVPN agar mulai saat boot.

update-rc.d -f openvpn defaults

Mulai layanan OpenVPN.

service openvpn restart

Instal OpenVPN di Klien

Jalankan perintah berikut untuk menginstal OpenVPN di mesin klien.

apt-get install openvpn

Dengan menggunakan editor teks, atur konfigurasi klien OpenVPN di ‘/etc/openvpn/client.conf‘, pada klien. Contoh konfigurasinya adalah sebagai berikut:

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

Jalankan perintah berikut untuk mengatur OpenVPN agar mulai saat boot.

update-rc.d -f openvpn defaults

Mulai layanan OpenVPN di klien.

service openvpn restart

Setelah Anda yakin bahwa OpenVPN berjalan dengan baik di IPv4, berikut adalah cara agar IPv6 berfungsi melalui OpenVPN.

Membuat IPv6 berfungsi dengan OpenVPN di Server

Tambahkan baris berikut di akhir file konfigurasi server '/etc/openvpn/server.conf'.

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

Kedua skrip ini membangun/menghancurkan terowongan IPv6 setiap kali klien terhubung/terputus.

Berikut adalah isi dari client-connect.sh.

#!/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

Host saya memberi saya alamat IPV6 dari blok 2a00:dd80:003d:000c::/64. Oleh karena itu, saya menggunakan
2a00:dd80:003d:000c sebagai BASERANGE. Ubah nilai ini sesuai dengan apa yang diberikan host Anda.

Setiap kali klien terhubung ke OpenVPN, skrip ini menetapkan alamat 2a00:dd80:003d:000c:1001::1 sebagai alamat IPV6 dari tap0< antarmuka server.

Baris terakhir menyiapkan Neighbor Discovery untuk terowongan kita. Saya telah menambahkan alamat IPv6 dari koneksi tap0 sisi klien sebagai alamat proxy.

Berikut adalah isi dari client-disconnect.sh.

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

Ini hanya menghapus alamat terowongan IPv6 server, ketika klien terputus. Ubah nilai BASERANGE seperlunya.

Jadikan skrip dapat dieksekusi.

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

Tambahkan entri berikut ke '/etc/rc.local' (Anda juga dapat memodifikasi sysctl yang sesuai di /etc/sysctl.conf).

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

Entri ini mengaktifkan Neighbor Discovery dan Forwarding. Saya juga telah menambahkan firewall.

Buat '/etc/init.d/firewall' dan masukkan konten berikut.

#!/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

Jalankan '/etc/rc.local' dan mulai firewall.

sh /etc/rc.local

Ini menyelesaikan modifikasi sisi server.

Membuat IPv6 berfungsi dengan OpenVPN di Klien

Tambahkan baris berikut ini sebagai baris terakhir file konfigurasi klien Anda ‘/etc/openvpn/client.conf‘.

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

Skrip atas dan bawah membangun/menghancurkan titik akhir klien IPV6 dari koneksi tap0 klien setiap kali klien menghubungkan/memutuskan sambungan ke atau dari server OpenVPN.

Berikut isi up.sh.

#!/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

Skrip menetapkan alamat IPV6 2a00:dd80:3d:c:1001::2 sebagai alamat IPV6 klien dan menetapkan rute IPV6 default melalui server.

Ubah IPV6BASE menjadi sama dengan BASERANGE pada konfigurasi server.

Berikut isi down.sh.

#!/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

Ini hanya menghapus alamat IPV6 klien dan menghancurkan rute IPV6 ketika klien terputus dari server.

Ubah IPV6BASE menjadi sama dengan BASERANGE dalam konfigurasi server dan buat skrip dapat dieksekusi.

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

Secara opsional, ubah '/etc/resolv.conf' dan tambahkan server nama IPV6 Google untuk resolusi DNS.

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

Mulai ulang openvpn di server dan kemudian sambungkan dari klien. Anda harus terhubung. Kunjungi test-ipv6.com untuk melihat apakah konektivitas IPV6 Anda melalui OpenVPN berfungsi.

Tautan Referensi

Beranda OpenVPN

Sumber: stavrovski