Paving terowongan L2 di OpenVPN



Saya baru-baru ini diminta untuk mengetahui cara mengkonfigurasi L2 tunnel untuk jembatan antara dua LAN jarak jauh, dan saya kagum pada betapa sedikit solusi mudah yang bisa saya temukan. Sebelumnya, saya tidak tertarik dengan topik ini dan secara naif percaya bahwa protokol VPN yang memadai dapat menangkap paket siaran dan meneruskannya melalui terowongan L3 biasa. Sayangnya, tidak ada solusi universal yang tersedia "out of the box". Ada beberapa protokol dan alat untuk mereka, yang sebagian besar bekerja dalam kondisi yang sangat terbatas atau sepenuhnya ditinggalkan. Saya akan membagikan opsi yang paling menyenangkan lebih lanjut.



Kenapa tepatnya L2?



Saya mengajukan pertanyaan ini pertama-tama: Saya jarang bekerja dengan periferal jaringan, dan bagi saya sepertinya sudah lama semua peralatan dapat berjalan di L3. Apapun masalahnya: seseorang membutuhkan akses ke printer kantor, seseorang ke DVR, dan seseorang hanya ingin terhubung dengan seorang teman dalam duel LAN - tanpa meninggalkan rumah, tentu saja. Juga sangat menarik adalah gagasan folder bersama / jaringan di kantor, dapat diakses dari rumah, terutama selama periode pensiun total.



Pada saat yang sama, di antara pengembang klien VPN, jembatan L2 untuk beberapa alasan dianggap sesuatu seperti tingkah aneh satu atau dua persen pengguna, yang, pada umumnya, tidak diperlukan oleh siapa pun. Situasinya benar-benar berbeda di jaringan industri, di mana ada banyak peralatan yang ketinggalan jaman atau tidak kompatibel, dan konsep L2VPN (diwakili oleh sekelompok singkatan lainnya) diimplementasikan pada tingkat jaringan dan penyedia.



Teknologi



Ada banyak dari mereka, dan mereka semua bekerja dengan keanehan dan keterbatasan:



  • Sebagai contoh, Protokol Tunneling Layer 2 (L2TP) harus, dilihat dari namanya, memberikan dukungan untuk OSI L2, termasuk penerusan siaran. Tapi tidak, bundel L2TP + IPsec konvensional tidak memungkinkan menjembatani jaringan di tingkat L2!
  • PPTP - telah menjadi meme karena kerentanan utama, sekarang entah bagaimana diperbaiki, tetapi tidak ada hubungannya dengan L2.
  • MPLS โ€” ยซยป . , RouterOS ( , ).
  • PPPoE PPPoEoE , . PPPoE , Cisco.
  • EoIP L2VPN made right, , . PPTP, GRE, NAT.


Dan kemudian saya terkejut menemukan bahwa Ethernet Bridging nyata dapat ... OpenVPN!



Kami sering menggunakan VPN pribadi atau kantor, banyak yang dinyalakan secara terus-menerus untuk mem-bypass pemblokiran (meskipun tren ini menurun setelah blok Telegram dihapus). Dalam tugas pekerjaan saya, saya juga selalu menggunakan host jarak jauh untuk pengembangan, dan hampir selalu menggunakan OpenVPN. Untuk waktu yang lama saya tidak mengerti mengapa saya membutuhkan bundel OpenVPN Access Server + OpenVPN Connect pada klien. Untuk tugas-tugas saya, versi klasik dengan pengeditan konfigurasi manual selalu cukup untuk saya, dan panel admin khusus dan GUI tampak tidak pada tempatnya di klien tipis ramping. Tetapi ternyata antarmuka untuk mengatur jembatan jauh lebih nyaman daripada lembar konfigurasi di terminal, meskipun tidak semuanya sempurna dengan itu.



Pengaturan



Faktanya adalah bahwa Access Server (AS) keluar sebagai produk yang dibayar dan agak mahal, sehingga mereka dengan rajin menjejalkan semua jenis barang ke dalamnya, hanya untuk membelinya. Dengan demikian, sub-item menu muncul di panel admin web, yang memungkinkan Anda untuk memilih mode jaringan (L2 bridging / L3 routing), dan setelah beberapa saat itu diam-diam dipotong dari sana untuk alasan yang sama "tidak ada yang membutuhkannya". Namun, fungsi penghubung itu sendiri dan skrip yang sesuai belum dihapus dan masih dapat disesuaikan.



Instalasi



Kami membutuhkan server atau mesin virtual. Gambar untuk itu ada di halaman unduhan , dan kami akan terus menganalisis kasus dengan instalasi pada server di bawah Ubuntu 18.04:



apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as


Setelah instalasi, server akan naik sendiri, Anda akan melihat pesan ini:



+++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.8.4 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log

Access Server Web UIs are available here:
Admin  UI: https://185.209.31.165:943/admin
Client UI: https://185.209.31.165:943/
+++++++++++++++++++++++++++++++++++++++++++++++


Anda perlu menentukan kata sandi untuk akun admin:



passwd openvpn


Kemudian Anda dapat membuka panel admin di browser (di: 943 / admin, seperti yang dijelaskan di atas), masuk sebagai pengguna openvpn dengan kata sandi yang ditentukan, dan konfigurasikan server.







AS gratis untuk digunakan oleh dua pengguna, maka Anda dapat menambahkan hanya untuk $ 18 / bulan untuk satu pengguna, jadi lebih baik untuk segera merancang proses Anda untuk terowongan menggunakan dua klien.



Kembali menjembatani



cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start


Jika semuanya berjalan dengan baik, output json akan berisi yang berikut:



{
 "errors": {},
 "last_restarted": "Thu Jul  2 00:07:37 2020",
 "service_status": {
   "api": "on",
   "auth": "on",
   "bridge": "on",
        ...
    }
}


Di panel admin, status "OSI Layer: 3 (routing / NAT)" akan berubah menjadi "2 (bridging)"



NB: dalam versi terbaru, informasi tentang L3 mungkin tetap dengan jembatan diaktifkan. Kenapa - saya tidak mengerti, aman dalam hal ini versi sekitar 2.4


Sebenarnya, pengetahuan ini berakhir, maka Anda hanya perlu mengkonfigurasi server untuk diri Anda sendiri, dapatkan pengguna kedua melalui antarmuka web yang sama dan masuk ke halaman pengguna pada port 943 (tanpa / admin). Akan ada tautan untuk mengunduh klien OpenVPN Connect untuk semua platform dengan konfigurasi terpanggang untuk menghubungkan (kecuali untuk aplikasi seluler, di sana Anda harus mengarahkan alamat secara manual, dan kemudian semuanya akan menginstalnya sendiri).







Setelah berhasil menghubungkan dan menjembatani klien, sebuah terowongan L2 dengan lalu lintas TCP / UDP akan tersedia. Klien dapat bertindak sebagai nat untuk jaringan internal, ini juga dikonfigurasi di panel admin.






All Articles