GNU/Linux >> Belajar Linux >  >> Panels >> OpenVPN

Menyiapkan server OpenVPN dengan Ubuntu dan Viscosity

Panduan ini akan memandu Anda melalui langkah-langkah yang terlibat dalam menyiapkan server OpenVPN pada host Ubuntu yang memungkinkan Anda mengakses jaringan rumah/kantor Anda dengan aman dari lokasi yang jauh dan secara opsional mengirim semua lalu lintas jaringan Anda melaluinya sehingga Anda dapat mengakses internet dengan aman juga.

Sebelum menggunakan panduan ini, kami sangat menyarankan Anda membaca artikel Pengantar Menjalankan Server OpenVPN kami.

Persiapan

Untuk panduan ini, kami berasumsi:

  • Anda telah menginstal versi terbaru Ubuntu (20,04 pada saat penulisan)
  • Anda memiliki root akses ke instalasi ini
  • Instalasi Ubuntu ini adalah instalasi yang bersih
  • Ketahui nama antarmuka jaringan Anda (petunjuk tepat di bawah)
  • Anda memiliki akses ke server melalui Terminal atau SSH
  • Anda dapat menyalin file di dalam dan di luar server menggunakan SCP atau protokol serupa
  • Anda sudah memiliki salinan Viskositas yang terinstal di perangkat klien Anda

Jika Anda perlu mengunduh dan menginstal salinan Ubuntu, informasinya dapat ditemukan di http://www.ubuntu.com/download. Kami tidak akan membahas detail pengaturan instance Ubuntu, banyak panduan dapat ditemukan secara online. Jika Anda menjalankan versi Ubuntu yang berbeda, kemungkinan besar banyak atau bahkan semua langkah yang diuraikan dalam panduan ini akan tetap berlaku. Jika Anda ingin menyiapkan server OpenVPN pada sistem operasi yang berbeda, silakan lihat panduan kami yang lain.

Jika Anda belum memiliki salinan Viscosity yang sudah terinstal di klien Anda, silakan lihat panduan penyiapan ini untuk menginstal Viscosity (Mac | Windows).

Jika Anda baru mengenal SSH atau SCP, kami memiliki beberapa petunjuk di Panduan Pengenalan kami.

Untuk mendapatkan nama Antarmuka Jaringan Utama (Akses WAN), jalankan yang berikut ini di Server Ubuntu Anda:
ip route | grep default | awk '{print $NF}'

Jika Anda memiliki antarmuka jaringan kedua untuk mengakses mesin di jaringan lokal, Anda akan memerlukan nama ini juga saat menyiapkan firewall dan perutean.

Dukungan

Sayangnya kami tidak dapat memberikan dukungan langsung apa pun untuk menyiapkan server OpenVPN Anda sendiri. Kami memberikan panduan ini sebagai rasa hormat untuk membantu Anda memulai, dan memaksimalkan, salinan Viskositas Anda. Kami telah menguji secara menyeluruh langkah-langkah dalam panduan ini untuk memastikan bahwa, jika Anda mengikuti petunjuk yang dirinci di bawah ini, Anda seharusnya sudah siap untuk menikmati manfaat menjalankan server OpenVPN Anda sendiri.

Untuk informasi lebih lanjut atau bantuan dengan Ubuntu, ada berbagai sumber daya komunitas yang tersedia di https://www.ubuntu.com/community

Memulai

Pertama, perbarui server Anda:

sudo apt-get update
sudo apt-get -y upgrade

Anda mungkin diberitahu bahwa Anda perlu memulai ulang setelah upgrade paket selesai. Jika demikian, lanjutkan dan mulai ulang, lalu masuk kembali dan lanjutkan.

Untuk mengatur server OpenVPN, kita perlu menginstal OpenVPN. Jalankan perintah berikut, menunggu setiap perintah selesai, untuk menambahkan repositori OpenVPNs ke apt sehingga OpenVPN diinstal dan diperbarui secara otomatis, dan kemudian menginstal OpenVPN:

sudo wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | sudo apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/stable focal main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list
Catatan:Jika Anda menggunakan distribusi Ubuntu yang lebih lama, ganti "focal" pada perintah di atas untuk "xenial" jika Ubuntu 16.04, atau "bionic" jika Ubuntu 18.04.

sudo apt-get update
sudo apt-get -y install openvpn


Membuat Konfigurasi, Sertifikat, dan Kunci

Langkah selanjutnya adalah membuat konfigurasi Anda untuk server dan klien Anda serta sertifikat untuk menyertainya. Anda dapat melakukannya dengan mudah dengan mengikuti Panduan Membuat Sertifikat dan Kunci. Anda dapat mengikuti bagian untuk Ubuntu dan menyalin konfigurasi klien Anda dari server (kami menyarankan ini), atau membuat semua yang ada di PC atau Mac Anda dan menyalin server folder yang dihasilkan ke server Ubuntu Anda.

Jika Anda menggunakan Server DNS default (10.8.0.1), Anda harus menyiapkan server DNS sendiri, petunjuknya ada di akhir artikel ini. Sebaiknya gunakan server DNS yang ada, server DNS yang tersedia untuk umum seperti milik Google (8.8.8.8 dan 8.8.4.4) adalah yang termudah.

Setelah Anda membuat Konfigurasi Anda, Anda perlu mentransfer konfigurasi server ke server Anda, atau mentransfer konfigurasi klien Anda dari server Anda. Jika Anda memiliki akses lokal, drive USB adalah yang termudah. Jika tidak, kami memiliki beberapa bantuan tentang cara mentransfer file dengan SCP di Panduan Pengenalan kami.

Penerusan IP

Untuk meneruskan permintaan kami melalui VPN, kami ingin server OpenVPN bertindak seperti router. Karena itu, kita perlu mengaktifkan penerusan IP. Di terminal, kita dapat mengaktifkan penerusan IP di server Ubuntu dengan memasukkan:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Namun, setiap kali kita me-reboot server, perintah ini akan dibatalkan. Untuk memastikan itu tidak terjadi, kita perlu memodifikasi file sysctl.conf menggunakan nano. Masukkan:

sudo nano /etc/sysctl.conf

Gulir ke bawah ke bagian:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Hapus karakter ‘#’ di awal baris sehingga menjadi:

net.ipv4.ip_forward=1

Setelah selesai, tekan ctrl + x untuk keluar dari nano. Simpan perubahan saat diminta.

Untuk memastikan bahwa host di jaringan rumah/kantor dapat menemukan server VPN, kita perlu membuat server merespons setiap permintaan ARP:

echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/proxy_arp

di mana ens33 adalah antarmuka jaringan jaringan rumah/kantor jika Anda memiliki dua antarmuka jaringan, atau Antarmuka Jaringan Utama (WAN) jika tidak (Lihat bagian Persiapan untuk informasi lebih lanjut).

Aturan Firewall

Kami akan menggunakan Uncomplicated Firewall (ufw) yang diinstal secara default di Ubuntu untuk mengontrol bagaimana lalu lintas dilewatkan melalui server OpenVPN. Jika server Ubuntu Anda dapat diakses secara eksternal (memiliki koneksi langsung ke internet dengan alamat IP-nya sendiri, tanpa router), maka Anda harus menggunakan ufw untuk mengizinkan port OpenVPN yang telah kami siapkan di atas (1194). Jika tidak, kami akan menyetel ufw untuk mengizinkan semua lalu lintas dan mengonfigurasi setelan untuk perutean.

Jika server Ubuntu Anda TIDAK perlu ufw untuk melindunginya (yaitu berada di belakang router atau memiliki pengaturan firewall yang berbeda), Anda perlu mengatur aturan input default untuk mengizinkan semua lalu lintas melewati ufw secara default. Untuk melakukannya, kita perlu memodifikasi file konfigurasi.

  1. Buka file ini di nano:
    sudo nano /etc/default/ufw
  2. Gulir ke bawah ke bagian:
    # Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
    # you change this you will most likely want to adjust your rules.
    DEFAULT_INPUT_POLICY="DROP"
  3. Karena server kami tidak akan menggunakan firewall ini untuk perlindungan, ubah dari "DROP" menjadi "ACCEPT"
  4. Gulir ke bawah ke bagian:
    # Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
    # if you change this you will most likely want to adjust your rules
    DEFAULT_FORWARD_POLICY="DROP"
  5. Ubah kebijakan penerusan dari "DROP" menjadi "ACCEPT"
  6. Tekan ctrl + x untuk keluar dari nano. Simpan perubahan saat diminta.

Jika server Ubuntu Anda TIDAK membutuhkan ufw untuk melindunginya , Anda perlu memberi tahu port mana yang diizinkan karena memiliki kebijakan input dan penerusan default DROP. Jika Anda menjalankan server OpenVPN dari lokasi yang jauh, Anda perlu memasukkan SSH ke dalamnya untuk mengubah pengaturan apa pun. Karena itu, kita perlu memberi tahu firewall untuk mengizinkan lalu lintas SSH.

  1. Memasukkan yang berikut ke terminal:
    sudo ufw allow ssh
  2. Traffic VPN yang akan kita kirim ke server OpenVPN akan melewati UDP pada port 1194, jadi masuk ke terminal:
    sudo ufw allow 1194/udp

Jika Anda memiliki layanan lain yang berjalan di server Ubuntu Anda, maka Anda perlu memastikan bahwa Anda mengizinkan lalu lintas mereka melalui ufw juga. Pastikan untuk menambahkan aturan izinkan untuk port lain yang didengarkan oleh server Ubuntu Anda (seperti server media Plex atau mungkin server email Anda sendiri).

Selanjutnya, apa pun penyiapan jaringan Anda , Anda perlu menyiapkan aturan perutean untuk ufw.

  1. Buka file konfigurasi ufw di nano:
    sudo nano /etc/ufw/before.rules
  2. Pindahkan kursor ke bawah bagian:
    #
    # 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
  3. Tempel berikut ini:
    # START OPENVPN RULES
    # NAT table rules
    *nat
    :POSTROUTING ACCEPT [0:0]

    # Uncomment the next POSTROUTING line and replace ens33 with the name
    # of your Local Network Interface if you have a second network interface
    # for accessing machines on your local network
    # Allow OpenVPN client to communicate with local home network
    #-A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/24 -o ens32 -j MASQUERADE

    # Allow traffic from OpenVPN client to your WAN and/or LAN via ens33
    -A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
    COMMIT
    # END OPENVPN RULES
    • Ganti ens33 dengan nama Antarmuka Jaringan Utama Anda jika berbeda (Lihat bagian Persiapan untuk informasi lebih lanjut)
  4. Pindahkan kursor ke bawah bagian:
    # Don't delete these required lines, otherwise there will be errors
    *filter
    :ufw-before-input - [0:0]
    :ufw-before-output - [0:0]
    :ufw-before-forward - [0:0]
    :ufw-not-local - [0:0]
    # End required lines
  5. Tempel berikut ini:
    #Accept all traffic to and from VPN
    -A ufw-before-input -i tun+ -j ACCEPT
    -A ufw-before-output -i tun+ -j ACCEPT

    # Forward traffic to and from the VPN
    -A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
    -A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
  6. Tekan ctrl + x untuk keluar dari nano. Simpan perubahan saat diminta.

Ufw sekarang siap untuk diaktifkan.

  1. Di terminal, ketik:
    sudo ufw enable
  2. Jika Anda menggunakan SSH ke dalam instance Ubuntu ini, ini akan menampilkan prompt:
    Command may disrupt existing ssh connections. Proceed with operation (y|n)?
    Yang harus Anda balas dengan y .

Output berikut kemudian akan ditampilkan (terlepas dari SSH atau tidak)

Firewall is active and enabled on system startup

Memulai Server OpenVPN

Pada titik ini dasar-dasarnya selesai. Konfigurasi dan file server Anda harus berada di server Anda, baik yang dibuat di server, atau disalin dari tempat Anda membuatnya.

Pertama, salin file konfigurasi server ke direktori OpenVPN:

sudo cp /path/to/configs/server/* /etc/openvpn/

Sekarang mulai server Anda, dan aktifkan untuk memulai setelah reboot juga.

sudo systemctl enable [email protected]
sudo systemctl start [email protected]

Untuk memeriksa status server, masukkan:

sudo systemctl status [email protected]

Yang harus dibalas dengan:

Active: active (running) since Thu 2017-06-01 17:06:29 PDT; 4s ago

Jika server tidak terdaftar sebagai aktif (berjalan), Anda akan melihat output log yang menampilkan apa yang salah.

Server OpenVPN Anda sekarang aktif dan berjalan dan siap untuk Anda sambungkan.

Penyiapan Router

Jika server Ubuntu Anda dapat diakses secara langsung , maka Anda dapat melewati bagian ini . Tidak ada router untuk dikonfigurasi.

Namun jika server Ubuntu Anda berada di belakang router (seperti di WiFi rumah Anda), maka Anda perlu mengonfigurasi router Anda untuk mengizinkan lalu lintas VPN. Silakan lihat Artikel Pengantar Menjalankan Server OpenVPN kami untuk informasi lebih lanjut.

Menyiapkan Viskositas

Langkah terakhir adalah mengatur Viskositas. Berkat openvpn-generate, ini semudah mengimpor dan menghubungkan.

Mengimpor

Salin file *.visz yang Anda buat dengan openvpn-generate ke mesin Mac atau Windows Anda dengan Viscosity terinstal dan klik dua kali file tersebut. Anda akan melihat konfirmasi bahwa konfigurasi berhasil diimpor.

Menghubungkan dan Menggunakan Koneksi VPN Anda

Anda sekarang siap untuk terhubung. Klik ikon Viskositas di bilah menu macOS atau baki sistem Windows untuk membuka Menu Viskositas, pilih koneksi yang Anda impor, dan Viskositas akan terhubung.

Untuk memeriksa apakah VPN aktif dan berjalan, Anda dapat membuka jendela Detail dari Menu Viskositas. Ini akan memungkinkan Anda untuk melihat detail koneksi, lalu lintas, dan log OpenVPN.



Itu saja, Anda telah menyiapkan server OpenVPN Anda sendiri. Selamat, Anda sekarang bebas menikmati keuntungan mengoperasikan server OpenVPN Anda sendiri!

Server DNS Dasar

Jika Anda memilih untuk menjalankan server DNS Anda sendiri untuk klien, berikut ini adalah contoh pengaturan untuk dnsmasq. Instal dnsmasq dengan perintah berikut:

sudo apt-get install -y dnsmasq

Anda harus terlebih dahulu menonaktifkan instance dnsmasq yang disediakan oleh NetworkManager secara default. Instance default ini dibatasi dan tidak mengizinkan kami untuk mendengarkan permintaan DNS melalui VPN.

  1. Buka konfigurasi NetworkManager:
    nano /etc/NetworkManager/NetworkManager.conf
  2. Komentari baris yang mengaktifkan dnsmasq dengan menambahkan karakter '#' di depan baris:
    dns=dnsmasq
  3. Tekan ctrl + x untuk keluar dari nano. Simpan perubahan saat diminta.

Selanjutnya kita perlu memodifikasi beberapa konfigurasi default.

  1. Buat cadangan dari konfigurasi dnsmasq asli:
    cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  2. Setel server DNS untuk mendengarkan permintaan dari server Ubuntu (127.0.0.1) dan dari VPN (10.8.0.1):
    echo -e "listen-address=127.0.0.1, 10.8.0.1\nbind-interfaces" > /etc/dnsmasq.conf
  3. Cegah permintaan DNS kami membanjiri server DNS root dengan permintaan buruk:
    echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
  4. Gunakan server DNS Google untuk menyelesaikan permintaan (Anda bebas menggunakan layanan resolusi DNS pilihan Anda):
    echo -e "server=8.8.8.8\nserver=8.8.4.4" >> /etc/dnsmasq.conf
  5. Mulai ulang layanan dnsmasq untuk mengaktifkan perubahan kami:
    service dnsmasq restart

Untuk memeriksa apakah server DNS mendengarkan alamat yang kami minta, ketik:

netstat -anup

Anda akan melihat daftar alamat, termasuk 127.0.0.1 dan 10.8.0.1:

Proto Recv-Q Send-Q Local Address         Foreign Address       State     PID/Program name
...
udp        0      0 127.0.0.1:53          0.0.0.0:*                       54892/dnsmasq   
udp        0      0 10.8.0.1:53           0.0.0.0:*                       54892/dnsmasq   
...

Terakhir, kita perlu memastikan bahwa dnsmasq dimulai setelah OpenVPN pada startup sistem. Secara default, dnsmasq berjalan sebelum OpenVPN, yang mencegahnya mengatur server DNS untuk VPN karena VPN belum ada.

  1. Buat cadangan dari file asli:
    cp /etc/rc.local /etc/rc.local.bak
  2. Ketik:
    echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
  3. Jadikan skrip ini dapat dieksekusi:
    chmod +x /etc/rc.local

Sekarang kita telah selesai menyiapkan server DNS.


OpenVPN
  1. Menginstal dan menyiapkan Server Media Plex di Ubuntu

  2. Cara Mengatur dan Mengonfigurasi Server OpenVPN di Ubuntu 22.04

  3. Instal dan Siapkan Server OpenVPN di Ubuntu 20.04

  1. Menyiapkan Amavis dan ClamAV di Server Mail Ubuntu

  2. Menyiapkan server Kebingungan dengan Obfsproxy dan Viskositas

  3. Menyiapkan server OpenVPN dengan CentOS dan Viscosity

  1. Menyiapkan server OpenVPN dengan DD-WRT dan Viskositas

  2. Menyiapkan server OpenVPN dengan Netgear dan Viscosity

  3. Menyiapkan server OpenVPN dengan Okta Single Sign-on Web Authentication dan Viscosity