Cara membuat VPN di Ubuntu 20.04 Menggunakan Wireguard

Cara membuat VPN di Ubuntu 20.04 Menggunakan Wireguard

Wireguard adalah moden dan sangat mudah untuk disediakan VPN yang terdapat di pelbagai sistem operasi. Permohonan ini tersedia di Ubuntu 20.04 repositori rasmi, jadi ia juga sangat mudah dipasang. Tidak seperti perisian lain seperti OpenVPN yang berdasarkan penggunaan sijil SSL, Wireguard berdasarkan penggunaan pasangan utama. Dalam tutorial ini, kita akan melihat cara mengkonfigurasi, dalam beberapa langkah mudah, pelayan VPN dan rakan sebaya pelanggan pada versi stabil terkini Ubuntu.

Dalam tutorial ini anda akan belajar:

  • Cara Memasang Wireguard di Ubuntu 20.04 Focal Fossa
  • Cara membuat pasangan kunci awam dan swasta
  • Cara mengkonfigurasi pelayan dan rakan sebaya pelanggan
  • Cara mengalihkan semua lalu lintas masuk ke VPN
Wireguard VPN di Ubuntu 20.04

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Ubuntu 20.04 Focal Fossa
Perisian wireguard
Yang lain Keistimewaan akar
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Pemasangan

Wireguard boleh didapati secara rasmi di repositori "Universe" Ubuntu 20.04, oleh itu kita boleh memasangnya melalui Apt. Versi yang ada, pada masa penulisan adalah 1.0.20200319-1UBUNTU1:

$ sudo apt memasang wireguard 

Sistem ini akan meminta kami mengesahkan kami ingin memasang program dan kebergantungannya, dan akan menyelesaikan operasi dalam beberapa saat.

Menjana kunci

Kami mesti menjana kunci awam dan peribadi untuk setiap mesin yang ingin kami gunakan di VPN kami. Kunci peribadi harus dirahsiakan pada mesin, orang awam digunakan untuk mengakses mesin dari rakan sebaya yang lain.

Untuk menjana kunci kita boleh menggunakan WG utiliti. Di dalam fail konfigurasi wireguard kita perlu merujuk kunci peribadi mesin, sementara orang awam akan digunakan pada rakan sebaya lain. Perhatikan bahawa kita akan merujuk kunci secara langsung, jadi secara teorinya kita tidak perlu menyimpannya ke fail. Kami akan melakukannya, hanya untuk kemudahan.

Untuk menjana kunci peribadi untuk pelayan kami, kami mesti menggunakan Genkey Subcommand of WG. Arahan mengeluarkan kekunci yang dibuat untuk stdout; Untuk menulis kunci ke fail, kita boleh menggunakan kuasa pengalihan shell:

$ wg Genkey> server_private_key 

Perintah akan menghasilkan kunci dan menyimpannya ke server_private_key fail, tetapi akan menaikkan amaran berikut:

AMARAN: Menulis ke fail yang boleh diakses oleh dunia. Pertimbangkan untuk menetapkan Umask ke 077 dan cuba lagi. 

Ini kerana dengan pengguna lalai Umask (002) Fail dibuat dengan mod 664, begitu juga dengan dunia, yang tidak disyorkan. Untuk menyelesaikan masalah ini, kita boleh menukar Umask yang digunakan dalam sesi shell semasa sebelum membuat fail:

$ UMASK 077 

Atau menukar kebenaran fail ke 600 selepas penciptaan. Di sini kita akan pergi untuk penyelesaian yang terakhir.

Setelah kunci peribadi kami sudah siap, kami dapat menjana awam satu yang berdasarkannya. Untuk melaksanakan tugas kami menggunakan Pubkey Subcommand of WG. Sama seperti sebelum kita menggunakan pengalihan shell: pertama untuk lulus kandungan server_private_key fail ke stdin perintah itu, dan kemudian dan untuk mengalihkan kunci yang dihasilkan ke server_public_key Fail:

$ wg pubkey server_public_key 

Untuk melepaskan beberapa menaip kita dapat menjana kedua -dua kunci, dengan hanya satu arahan, yang melibatkan penggunaan cangkang | (paip) pengendali dan tee Perintah:

$ wg Genkey | TEE SERVER_PRIVATE_KEY | wg pubkey> server_public_key 

Output arahan di sebelah kiri pengendali paip (|) diserahkan kepada input standard program di sebelah kanannya. The tee Perintah, sebaliknya biarkan kami mengalihkan output perintah ke kedua -dua fail dan output standard (lebih lanjut mengenai pengalihan shell di sini).

Setelah kunci kami siap, kami dapat membuat fail konfigurasi pelayan.

Fail konfigurasi pelayan

Untuk mengkonfigurasi pemasangan wayar kami, kami boleh membuat fail konfigurasi yang dipanggil WG0.Conf dengan kandungan berikut:

[Antara muka] privateKey = alamat = 10.0.0.1/24 Listenport = 51820 

Perhatikan bahawa nama fail itu sewenang -wenangnya, tetapi ia harus berdasarkan nama yang akan kami gunakan untuk antara muka kami, WG0 Dalam kes ini. Nama ini akan dirujuk apabila memulakan perkhidmatan, seperti yang akan kita lihat di bawah.

Dalam contoh kami. The [antara muka] Bahagian fail konfigurasi mengandungi medan berikut:

  • PrivateKey
  • Alamat
  • Listenport

The PrivateKey Nilai medan tidak lebih daripada kekunci peribadi pelayan yang kami hasilkan sebelumnya.

Di dalam Alamat medan kami menetapkan alamat untuk diberikan kepada antara muka di VPN bersama -sama dengan topeng subnet menggunakan Cidr notasi. Dalam kes ini kita gunakan 10.0.0.1/24, Jadi alamat "pelayan" wayar kami di dalam VPN akan menjadi 10.0.0.1, yang terdapat dalam julat alamat yang ada 10.0.0.1 ke 10.0.0.254.

Akhirnya, di Listenport medan, kami menentukan apa yang akan didengar oleh Port Wireguard untuk trafik yang masuk. Peraturan untuk membenarkan lalu lintas tersebut juga mesti ditambah ke firewall kami. Kami akan melakukan ini di bahagian seterusnya.

Sekarang kita dapat mengubah kebenaran fail dan memindahkannya ke /etc/wireguard Direktori:

$ chmod 600 server_public_key server_private_key wg0.conf $ sudo mv server_private_key server_public_key wg0.conf /etc /wireguard 

Kita sekarang boleh memulakan WG-Quick perkhidmatan yang menyatakan nama antara muka wireguard selepas @ dalam nama unit. Apa notasi ini? Ini adalah ciri sistemd: dengan itu kita dapat menjana pelbagai fail unit di dasar "templat" yang lulus nilai yang akan digantikan dalam templat, setelah @ simbol atas nama unit. Ini adalah kandungan [email protected] Unit:

[Unit] Description = Wireguard melalui WG-Quick (8) untuk %i selepas = Rangkaian-Online.Sasaran NSS-Lookup.sasaran mahu = rangkaian dalam rangkaian.Sasaran NSS-Lookup.Dokumentasi Sasaran = Man: WG-Quick (8) Dokumentasi = Man: WG (8) Dokumentasi = https: // www.wireguard.com/dokumentasi = https: // www.wireguard.com/QuickStart/Documentation = https: // git.ZX2C4.com/wireguard-tools/about/src/man/wg-quick.8 Dokumentasi = https: // git.ZX2C4.com/wireguard-tools/about/src/man/wg.8 [Service] Type = Oneshot RemainAfterExit = Yes Execstart =/usr/bin/Wg-quick Up %i execstop =/usr/bin/wg-quick down %i Environment = wg_endpoint_resolution_retries = Infinity [install] Wanteby = Multi-User.sasaran 

Nilai yang akan kami tentukan selepas @ dalam nama unit semasa memulakan atau menghentikannya, akan menggantikannya %i di dalam Execstart dan Execstop garis. Dalam kes ini kita akan menggunakan WG0:

$ sudo systemctl enable --now wg-quick@wg0 

Dengan arahan di atas kami memulakan perkhidmatan dan juga membuat sehingga secara automatik dimulakan di Boot. Untuk mengesahkan konfigurasi kami telah digunakan, kami dapat menjalankan WG perintah. Output yang dihasilkan harus memaparkan maklumat mengenai WG0 antara muka:

$ sudo WG Interface: WG0 Kunci Awam: NNX3ZPCV9D2DTGHDSOYGBNR64ZG5JTJ4Z4T2SE759V4 = Kunci Persendirian: (Tersembunyi) Port Mendengarkan: 51820 

Sekarang, mari kita teruskan dan konfigurasikan firewall dan penghantaran paket kami.

Persediaan Firewall dan Rangkaian

Dalam tutorial ini saya akan menganggap penggunaannya ufw. Seperti yang kita katakan sebelum ini, kita mesti menambah peraturan untuk membenarkan trafik masuk melalui pelabuhan yang kami tentukan dalam fail konfigurasi, 51820. Kami melakukannya dengan menjalankan arahan yang sangat mudah:

$ sudo ufw membenarkan 51820/udp 

Kami juga perlu membenarkan pemajuan paket pada sistem kami. Untuk melaksanakan tugas kita untuk membuang komen dari baris 28 daripada /etc/sysctl.Conf fail, supaya kelihatan seperti ini:

# Uncomment baris seterusnya untuk membolehkan pemajuan paket untuk bersih IPv4.IPv4.ip_forward = 1 

Untuk membuat perubahan berkesan tanpa menghidupkan semula sistem, kita perlu menjalankan arahan berikut:

$ sudo sysctl -p 

Dalam langkah seterusnya kami akan mengkonfigurasi pelanggan.

Generasi utama pelanggan

Mari kita bergerak ke sistem yang ingin kita gunakan sebagai pelanggan. Kita perlu memasang Wireguard di atasnya; Setelah selesai, kita boleh menjana pasangan utama seperti yang kita lakukan di pelayan:

$ wg Genkey | tee client_private_key | WG Pubkey> client_public_key 

Sama seperti kami membuat pelayan kami membuat WG0.Conf fail konfigurasi. Kali ini dengan kandungan ini:

[Antara muka] privateKey = alamat = 10.0.0.2/24 [Peer] PublicKey = endpoint =: 51820 dibenarkan = 0.0.0.0/0 

Kami sudah melihat makna bidang yang terkandung di dalam Antara muka bahagian, semasa kami menjana konfigurasi pelayan. Di sini kami hanya menyesuaikan nilai kepada pelanggan kami (ia akan mempunyai 10.0.0.2 alamat di VPN).

Dalam konfigurasi ini, kami menggunakan bahagian baru, [Rakan sebaya]. Di dalamnya, kita dapat menentukan maklumat yang berkaitan dengan rakan sebaya, dalam hal ini yang kita gunakan sebagai "pelayan". Bidang yang kami gunakan adalah:

  • Publickey
  • Titik akhir
  • Dibenarkan

Di dalam Publickey medan, kami menentukan awam Kunci rakan sebaya, jadi, dalam kes ini, kunci awam yang kami hasilkan di pelayan.

The Titik akhir adalah alamat IP awam atau nama hos rakan sebaya yang diikuti oleh kolon dan nombor pelabuhan rakan sebaya mendengar (dalam kes kami 51820).

Akhirnya, nilai yang dihantar ke Dibenarkan medan, adalah senarai alamat IP yang dipisahkan koma dan topeng subnet dengan notasi CIDR. Hanya lalu lintas yang diarahkan kepada rakan sebaya yang datang dari alamat yang ditentukan akan dibenarkan. Dalam kes ini kita gunakan 0.0.0.0/0 Sebagai nilai: ia berfungsi sebagai nilai "tangkapan", jadi semua lalu lintas akan dihantar ke rakan sebaya VPN (pelayan).

Sama seperti kami melakukan pelayan, kami menetapkan keizinan yang sesuai dan memindahkan kunci dan fail konfigurasi ke /etc/wireguard Direktori:

$ chmod 600 client_public_key client_private_key wg0.conf $ sudo mv client_public_key client_private_key wg0.conf /etc /wireguard 

Dengan fail konfigurasi, kita boleh memulakan perkhidmatan:

$ sudo systemctl enable --now wg-quick@wg0 

Akhirnya, [Rakan sebaya] seksyen berbanding dengan pelanggan kami, mesti ditambah ke fail konfigurasi yang kami buat sebelum ini pelayan. Kita tambah Kandungan berikut untuknya:

[Rakan sebaya] PublicKey = dibenarkan = 10.0.0.2/32 

Pada ketika ini kami memulakan semula perkhidmatan:

$ sudo systemctl mulakan semula wg-quick@wg0 

Maklumat mengenai rakan sebaya yang berkaitan sekarang harus dilaporkan dalam output WG Perintah:

$ sudo wg antara muka: wg0 kunci awam: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2se759v4 = Kunci peribadi: (Tersembunyi).0.0.2/32 

Pada ketika ini, dari sistem "klien", kita harus dapat ping pelayan di 10.0.0.1 Alamat:

$ ping -c 3 10.0.0.1 ping 10.0.0.1 (10.0.0.1) 56 (84) bait data. 64 bait dari 10.0.0.1: icmp_seq = 1 ttl = 64 time = 2.82 ms 64 bait dari 10.0.0.1: icmp_seq = 2 ttl = 64 masa = 38.0 ms 64 bait dari 10.0.0.1: icmp_seq = 3 ttl = 64 masa = 3.02 ms --- 10.0.0.1 statistik ping --- 3 paket dihantar, 3 diterima, 0% kehilangan paket, masa 2003ms rtt min/avg/max/mdev = 2.819/14.613/37.999/16.536 ms 

Kesimpulan

Dalam tutorial ini kita melihat cara membuat VPN menggunakan wireguard pada versi stabil Ubuntu terkini: 20.04 Focal Fossa. Perisian ini sangat mudah dipasang dan dikonfigurasikan, terutamanya jika dibandingkan dengan penyelesaian lain, sebagai contoh OpenVPN.

Kami melihat bagaimana untuk menjana kunci awam dan peribadi yang digunakan untuk persediaan kami, dan bagaimana untuk mengkonfigurasi kedua -dua pelayan dan klien supaya semua lalu lintas diarahkan ke VPN. Mengikuti arahan yang diberikan, anda akan mempunyai persediaan kerja. Untuk maklumat lanjut, sila lihat halaman projek.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Cara Menyiapkan Pelayan OpenVPN di Ubuntu 20.04
  • Asas Ubuntu 22.04 Persediaan Sambungan Pelanggan/Pelayan OpenVPN
  • Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu
  • Ubuntu 20.04 Panduan
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Senarai dan Pemasangan Pelanggan FTP di Ubuntu 20.04 Linux ..
  • Ubuntu 20.04: WordPress dengan pemasangan nginx
  • 8 persekitaran desktop Ubuntu terbaik (20.04 Focal Fossa ..