- 1. Konfigurasi Hostname
- 2. Instal OpenVPN, banyak paketnya, dll
- 3. Setup CA Dir
- 4. Build CA, KEY, DH dan Client Key
- 5. Generate Sertifikat Klien
- 6. Copy Key ke openvpn folder
- 7. Buat Konfigurasi OpenVPN Server
- 8. Jalankan Service OpenVPN Server
- 9. Forward TCP Trafik pada VPN
- 10. Buat Konfigurasi untuk klien
- 11. Salin file hasil generate ke komputer lokal
- 12. Buat Routingan
Berikut adalah topologi dari Lab:
Internet --------VPN Server (172.104.182.135) -----DIAL----- Web Server Lokal
Hal yang pertama dilakukan adalah mengubah hostname, hostname ditujukkan untuk mengubah nama dari server kita
hostnamectl set-hostname vpn.dhenandi.web.id
cat <<EOF > /etc/hosts
127.0.0.1 localhost
172.104.182.135 vpn.dhenandi.web.id vpn
EOF
Instal Paket OpenVPN dan easy-rsa. Tujuannya untuk membuat sertifikat self-signed nya:
sudo apt update
sudo apt -y install openvpn easy-rsa
Buat CA Direktori, untuk membuat root certificate
sudo make-cadir ~/openvpn-ca
cd ~/openvpn-ca
sudo sed -i 's/US/ID/g' vars
sudo sed -i 's/CA/Jabar/g' vars
sudo sed -i 's/SanFrancisco/Bekasi/g' vars
sudo sed -i 's/Fort-Funston/Bani Saleh/g' vars
sudo sed -i 's/me@myhost.mydomain/admin@dhenandi.web.id/g' vars
sudo sed -i 's/MyOrganizationalUnit/Puskom/g' vars
sudo sed -i 's/KEY_NAME="EasyRSA"/KEY_NAME="server"/g' vars
Kemudian, generate CA Root sertifikatnya. dengan perintah berikut, CA root dibuat dengan nama server
source ./vars
./clean-all
./build-ca # Jika ada pertanyaan Teken ENTER Terus, Jika ada pertanyaan y/n pilih aja Y
./build-key-server server # Jika ada pertanyaan Teken ENTER Terus, Jika ada pertanyaan y/n pilih aja Y
./build-dh
openvpn --genkey --secret keys/ta.key
Langkah selanjutnya adalah generate sertifikat untuk klien, sertifikat ini nantinya akan digunakan oleh klien, contoh saya beri nama client1
source vars
./build-key client1 # Jika ada pertanyaan Teken ENTER Terus, Jika ada pertanyaan y/n pilih aja Y
Salin file tersebut ke dalam konfigurasi openvpn
cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn
Untuk melakukan konfigurasi openvpn, kita dapat menggunakan dengan teks editor dengan mengedit file /etc/openvpn/server.conf, namun pada tutorial ini kami sudah mempersingkat dengan perintah pada linux dengan menggunakan sed:
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf
sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf
sudo sed -i 's/;tls-auth ta.key 0/tls-auth ta.key 0/g' /etc/openvpn/server.conf
sudo echo "key-direction 0" >> /etc/openvpn/server.conf
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
Jalankan perintah berikut agar jalur VPN bisa menggunakan internet:
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p
Langkah selanjutnya adalah membuat konfigurasi .ovpn untuk di import pada komputer yang hendak di koneksikan. jangan lupa sesuaikan 172.104.182.135 dengan server kamu. Kebetulan saya sudah menggunakan skrip otomatis untuk generate .ovpn secara mudah.
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
sudo sed -i 's/my-server-1/172.104.182.135/g' ~/client-configs/base.conf
sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf
sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf
sudo echo key-direction 1 >> ~/client-configs/base.conf
Salin file hasil generate (~/client-configs/files/client1.ovpn) ke komputer lokal dan lakukan koneksi pada OpenVPN klien menggunakan file .ovpn tersebut.
Agar web server bisa di teruskan ke jaringan publik, lakukan routing dengan menggunakan iptables sebagai berikut: Note: jangan lupa sesuaikan 10.8.0.6:8080 (ip 10.8.0.6 adalah ip yang saya dapat setelah dial ke OpenVPN Server, dan 8080 adalah port web server lokal saya)
iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.6:8080