Buka Connect VPN server dan jalankan Apache / Nginx di kotak yang sama dengan HAProxy



Tutorial ini akan menunjukkan kepada Anda bagaimana menjalankan Open Connect VPN Server (Auxer) dengan HAProxy dan Apache / Nginx di kotak yang sama. Open Connect (OCORS) adalah implementasi open source dari protokol Cisco Unconnect VPN.


ocserv-apache-nginx-haproxy



Persyaratan


Untuk mengikuti tutorial ini, diasumsikan bahwa Anda telah mengonfigurasi server OpenConnect VPN dengan sertifikat Chloe Encrypt TLS Server. Jika belum, silakan ikuti salah satu tutorial di bawah ini.


Gunakan server VPN koneksi terbuka dan port server web 443 secara bersamaan


Server Open Connect VPN sudah mendengarkan pada port 443. Jika Anda sudah memiliki Apache / Nginx yang mendengarkan pada port 443, maka Auxer 443 tidak dapat terikat ke port. Anda dapat mengonfigurasi Auxer untuk mendengarkan di port lain, tetapi ini akan membutuhkan pengguna akhir. Untuk menentukan port di perangkat lunak klien, Anda harus menghindarinya jika Anda peduli dengan pengalaman pengguna. Selain itu, lalu lintas TLS pada port TCP 443 biasanya mendapat prioritas lebih tinggi di QoS (kualitas layanan), jadi kecepatan Anda akan lebih baik.


Biasanya port hanya dapat digunakan melalui satu proses. Namun, kita dapat menggunakan HAproxy (proxy ketersediaan tinggi) dan SNI (indikator nama server) untuk menggunakan Auxer dan Apache / Enix port 443 secara bersamaan.


Konfigurasi Auxer


Pertama, edit file konfigurasi Oxygen.


sudo nano /etc/ocserv/ocserv.conf

Jangan bekerja di baris berikut. Ini akan memungkinkan pengguna mendapatkan alamat IP klien alih-alih alamat IP proksi HA.


listen-proxy-proto = true

Kemudian temukan baris berikut.


#listen-host = [IP|HOSTNAME]

Ubahlah


listen-host = 127.0.0.1

Ini akan memungkinkan Anda untuk mendengarkan Ocroser di 127.0.0.1 karena HAproxy perlu mendengarkan alamat IP publik nanti. Simpan dan tutup file. Kemudian mulai ulang Oxar.


sudo systemctl restart ocserv

Selanjutnya, kita perlu mendengarkan server web hanya di host lokal, daripada mendengarkan di server publik.


Konfigurasi Nginx


Jika Anda menggunakan Nginx, edit file blok server.


sudo nano /etc/nginx/conf.d/example.com.conf

Di blok Server SSL, temukan instruksi berikut.


listen 443 ssl;

Ubahlah


listen 127.0.0.2:443 ssl;

Kali ini kami memaksanya untuk mendengarkan 127.0.0.2:443 Karena 127.0.0.1:443 Oxar sudah mengambilnya. Simpan dan tutup file. File konfigurasi pusat Nginx /etc/nginx/nginx.conf Dan blok server default /etc/nginx/sites-enabled/default Ini mungkin termasuk host virtual default yang mendengarkan pada 443, jadi Anda mungkin juga perlu mengedit file ini.


Kemudian restart Nginx.


sudo systemctl restart nginx

Konfigurasi Apache


Jika Anda menggunakan server web Apache, edit file host virtual Anda.


Debian / Ubuntu


sudo nano /etc/apache2/sites-enabled/example.com.conf

Santos / RHEL


sudo nano /etc/httpd/conf.d/example.com.conf

Di Host Virtual SSL, alihkan


<VirtualHost *:443>

Melakukan


<VirtualHost 127.0.0.2:443>

Kali ini kami memaksanya untuk mendengarkan 127.0.0.2:443 Karena 127.0.0.1:443 Oxar sudah mengambilnya. Simpan dan tutup file.


Kemudian edit /etc/apache2/ports.conf File di Debian / Ubuntu.


sudo nano /etc/apache2/ports.conf

Edit/etc/httpd/conf.d/ssl.conf File di CentOS / RHEL.


sudo nano /etc/httpd/conf.d/ssl.conf

Perubahan


Listen 443

Melakukan


Listen 127.0.0.2:443

Simpan dan tutup file. Mulai ulang Apache.


sudo systemctl restart apache2

Atau


sudo systemctl restart httpd

Konfigurasi HAProxy


Instal HAproxy sekarang.


sudo apt install haproxy

Atau


sudo dnf install haproxy

Mulai HAProxy


sudo systemctl start haproxy

Edit file konfigurasi.


sudo nano /etc/haproxy/haproxy.cfg

Jika Anda menggunakan Nginx, salin dan tempel baris berikut ke akhir file. Perubahan 12.34.56.78 Dengan alamat IP publik server Anda. Perubahan vpn.example.com Dengan nama domain yang bersifat tambahan dan digunakan www.example.com Dengan nama domain yang digunakan server web Anda.


frontend https
bind 12.34.56.78:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if req_ssl_hello_type 1

use_backend ocserv if req_ssl_sni -i vpn.example.com
use_backend nginx if req_ssl_sni -i www.example.com
use_backend nginx if req_ssl_sni -i example.com

default_backend ocserv

backend ocserv
mode tcp
option ssl-hello-chk
# pass requests to 127.0.0.1:443. Proxy protocol (v2) header is required by ocserv.
server ocserv 127.0.0.1:443 send-proxy-v2

backend nginx
mode tcp
option ssl-hello-chk
server nginx 127.0.0.2:443 check

Jika Anda menggunakan Apache, salin dan tempel baris berikut di akhir file. Perubahan 12.34.56.78 Dengan alamat IP publik server Anda. Perubahan vpn.example.com Dengan nama domain yang bersifat tambahan dan digunakan www.example.com Dengan nama domain yang digunakan server web Anda.


frontend https
bind 12.34.56.78:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if req_ssl_hello_type 1

use_backend ocserv if req_ssl_sni -i vpn.example.com
use_backend apache if req_ssl_sni -i www.example.com
use_backend apache if req_ssl_sni -i example.com

default_backend ocserv

backend ocserv
mode tcp
option ssl-hello-chk
# pass requests to 127.0.0.1:443. Proxy protocol (v2) header is required by ocserv.
server ocserv 127.0.0.1:443 send-proxy-v2

backend apache
mode tcp
option ssl-hello-chk
server apache 127.0.0.2:443 check

Simpan dan tutup file. Kemudian restart HAproxy.


sudo systemctl restart haproxy

Dalam urutan di atas, kami menggunakan fitur SNI (Server Name Indicator) di TLS untuk membedakan antara lalu lintas VPN dan lalu lintas HTTPS normal.


  • Kapan vpn.example.com Klien TLS ada di Hello, mengalihkan lalu lintas hyperoxy ke latar belakang Ocrosser.

  • Kapan www.example.com Klien TLS ada di Hello, mengalihkan lalu lintas HAProxy ke backend Apache / nginx.

  • Jika klien tidak menentukan nama server di klien TLS halo, HAproxy akan menggunakan backend default (okors).

Anda dapat menguji penyiapan ini openssl Alat Pertama, jalankan perintah berikut beberapa kali.


echo | openssl s_client -connect your-server-IP:443 | grep subject

Kami tidak menentukan nama server dalam perintah ini, jadi HAproxy selalu mengirim permintaan ke backend default, dan sertifikatnya akan dikirim ke klien. Selanjutnya, jalankan dua perintah berikut.


echo | openssl s_client -servername www.example.com -connect your-server-IP:443 | grep subject

echo | openssl s_client -servername vpn.example.com -connect your-server-IP:443 | grep subject

Kami sekarang telah menentukan nama server di perintah, jadi HAproxy akan menerima permintaan sesuai dengan aturan SNI yang telah kami tentukan. Perhatikan bahwa Cisco tidak mendukung aplikasi kontak TLS SNI, jadi yang terbaik adalah mengkonfigurasinya ocserv Band berakhir di file konfigurasi HAProxy.


Saat memperbarui sertifikat terenkripsi untuk situs web Anda, Anda disarankan untuk menggunakannya. http-01 Tantang saja tls-alpn-01 Tantangan, karena HAproxy mendengarkan alamat IP publik pada port 443, sehingga dapat mengganggu proses pembaruan.


sudo certbot renew --preferred-challenges http-01

Memperbaiki kesalahan HAproxy


Jika situs web Apache / Annex Anda tidak muncul di browser Anda dan Anda melihat pesan berikut di log Hypoxy (/var/log/haproxy.log)


Server nginx/nginx is DOWN, reason: Socket error, info: "Connection reset by peer

backend nginx has no server available!

Layer6 invalid response

Ini mungkin backend Anda. Nginx Web Server menggunakan sertifikat TLS dengan OCSP. Ini harus diperpanjang. Nginx tidak mengirim informasi dasar OCSP pada permintaan HTTP pertama. Untuk membuatnya berfungsi, pastikan Anda menambahkan resolver ke konfigurasi host virtual Nginx seperti Anda.



....
ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;

resolver 8.8.8.8;
....

Simpan dan tutup file. Kemudian restart Nginx.


sudo systemctl restart nginx

Juga, pertimbangkan untuk menghapus pemeriksaan kesehatan untuk server backend di HAproxy. Jadi berubah


server nginx 127.0.0.2:443 check

Melakukan


server nginx 127.0.0.2:443

Simpan dan tutup file. Kemudian restart HAproxy.


sudo systemctl restart haproxy

Cara mengaktifkan IPv6 di Auxer melalui HAProxy


Pertama, buat data AAAA untuk vpn.example.com Di editor zona DNS Anda, jadi ketika Anda selesai mengkonfigurasi IPv6 di Axar, catatan DNS harus tersebar di Internet.


Memeriksa konektivitas IPv6


Untuk menyiapkan terowongan VPN dalam protokol IPv6, pastikan server VPN memiliki alamat IPv6 publik. (Klien VPN tidak boleh memiliki alamat IPv6 publik.) Untuk mencari tahu, jalankan perintah berikut.


ip addr

Temukan antarmuka jaringan utama. Jika Anda dapat menemukannya inet6 .... scope global Seperti intinya, maka Anda memiliki alamat IPv6 publik. inet6 Alamat dengan scope link Adalah alamat IPv6 pribadi.


Ipad ipv6 cakupan global


Kemudian buka https://test-ipv6.com/ untuk memeriksa konektivitas IPv6 Anda. Jika klien VPN memiliki alamat IPv6 publik, ini mungkin memberi tahu Anda bahwa VPN Anda hanya melindungi satu protokol, tidak keduanya. Ini karena kami tidak mengaktifkan IPv6 di Auxerre.


VPN Anda hanya melindungi satu protokol, tidak keduanya


Aktifkan IPv6 dalam kursus


Untuk mengaktifkan IPv6 di Auxer, edit file konfigurasi Auxer.


sudo nano /etc/ocserv/ocserv.conf

Temukan dua baris berikut dan bongkar, sehingga klien VPN akan diberi alamat IPv6 pribadi.


ipv6-network = fda9:4efe:7e3b:03ea::/48
ipv6-subnet-prefix = 64

Jika Anda melihat baris berikut


ipv6-network = fda9:4efe:7e3b:03ea::/64

Harap ubah:


ipv6-network = fda9:4efe:7e3b:03ea::/48

Simpan dan tutup file. Mulai ulang Luxor agar perubahan diterapkan.


sudo systemctl restart ocserv

Aktifkan penerusan IP untuk IPv6


Kemudian kita perlu mengaktifkan penerusan IP untuk IPv6 di kernel Linux. Edit sysctl.conf Mengajukan


sudo nano /etc/sysctl.conf

Tambahkan baris berikut di akhir file ini.


net.ipv6.conf.all.forwarding=1

Simpan dan tutup file. Kemudian terapkan perubahan dari perintah di bawah ini.


sudo sysctl -p

Konfigurasikan IPv6 di Firewall (Debian, Ubuntu)


Selanjutnya, kita perlu mengkonfigurasi masking IPv6 di firewall UFW, sehingga server menjadi router virtual untuk klien VPN.


sudo nano /etc/ufw/before6.rules

Secara default, ada beberapa aturan untuk filter Meja. Tambahkan baris berikut ke akhir file ini. Perubahan ens3 Dengan nama antarmuka jaringan Anda. Di Nano Text Editor, Anda dapat pergi ke akhir file dengan menekan Ctrl+W, Kemudian Ctrl+V.


# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ens3 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Menutupi di Firewall IPv6 UFW


Secara default, UFW melarang penerusan paket. Kami dapat mengizinkan Anda untuk melanjutkan ke jaringan IPv6 pribadi Anda. Temukan ufw6-before-forward Buat rantai di file ini dan tambahkan 3 baris berikut, yang akan menerima penerusan paket jika IP sumber atau IP tujuan ada dalam IP. fda9:4efe:7e3b:03ea::/48 Jarak


ufw ipv6 Memungkinkan paket pac diteruskan ke jaringan


Simpan dan tutup file. Kami juga perlu mengizinkan klien IPv6 VPN di firewall INPUT China.


sudo ufw allow in from fda9:4efe:7e3b:03ea::/48

Mulai ulang UFW agar perubahan diterapkan.


sudo systemctl restart ufw

Sekarang jika Anda memasukkan aturan dalam rantai POSTROUTING dari tabel NAT menggunakan perintah berikut:


sudo ip6tables -t nat -L POSTROUTING

Anda bisa melihat alasannya.


Aktifkan IPv6 di Oxar OpenConnect VPN


Untuk memutuskan koneksi VPN yang ada, tambahkan data AAAA vpn.example.com Dan buat kembali koneksi VPN. Kemudian buka https://test-ipv6.com/ untuk memeriksa konektivitas IPv6 Anda.


Siapkan IPv6 di firewall (CentOS)


Aktifkan penandaan topeng untuk IPv6.


sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv6" source address="fda9:4efe:7e3b:03ea::/48" masquerade"

Izinkan klien VPN untuk memasukkan.


sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv6" source address="fda9:4efe:7e3b:03ea::/48" accept"

Harap muat ulang firewall agar perubahan diterapkan.


sudo systemctl reload firewalld

Konfigurasi IPv6 di BIND Resolver


Jika Anda menjalankan pemecah DNS BIND di server VPN, Anda dapat menambahkan baris berikut /etc/ocserv/ocserv.conf File untuk menetapkan server VPN sebagai pemecah DNS untuk klien VPN.


dns = fda9:4efe:7e3b::1

Simpan dan tutup file. Untuk menanyakan nama DNS di IP IPv6, kita perlu mengkonfigurasi BIND untuk mengizinkan klien VPN IPv6.


Debian / Ubuntu


sudo nano /etc/bind/named.conf.options

Temukan allow-recursion Parameter dan ubah menjadi:


allow-recursion 127.0.0.1; 10.10.10.0/24; fda9:4efe:7e3b:03ea::/48; ;

Simpan dan tutup file. Mulai ulang BIND9.


sudo systemctl restart bind9

Santos


sudo nano /etc/named.conf

Temukan allow-query Parameter dan ubah menjadi:


allow-query 127.0.0.1; 10.10.10.0/24; fda9:4efe:7e3b:03ea::/48; ;

Simpan dan tutup file. Mulai ulang BIND9.


sudo systemctl restart named

Siapkan IPv6 di HAProxy


Edit file konfigurasi HAProxy.


sudo nano /etc/haproxy/haproxy.cfg

Lakukan https Dengarkan alamat IPv4 dan IPv6 frontend. Jelas Anda perlu menggunakan alamat IPv6 publik server Anda.


frontend https
bind 12.34.56.78:443
bind 2607:f8b0:4006:810::200e:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if req_ssl_hello_type 1

Mencari lagi ocserv Tambahkan backend dan server IPv6.


backend ocserv
mode tcp
option ssl-hello-chk
server ocserv 127.0.0.1:443 send-proxy-v2
server ocserv6 [::1]:443 send-proxy-v2

Simpan dan tutup file.


pada keduanya untuk menjadi ocserv 127.0.0.1 Dan ::1, Edit /etc/hosts Mengajukan


sudo nano /etc/hosts

Edit entri untuk 127.0.0.1 Dan ::1 Seperti di bawah ini vpn.example.com Nama host dapat diselesaikan di kedua alamat.


127.0.0.1 localhost vpn.example.com

::1 ip6-localhost ip6-loopback vpn.example.com

Simpan dan tutup file. Kemudian edit file konfigurasi Auxer.


sudo nano /etc/ocserv/ocserv.conf

Temukan garis di bawah ini.


listen-host = 127.0.0.1

Ubahlah


listen-host  = vpn.example.com

Alamat IPv4 dan IPv6 ocserv akan ditemukan vpn.example.com saya /etc/hosts Ikat file dan keduanya 127.0.0.1 Dan ::1 Simpan dan tutup file alamat. Kemudian restart Auxer dan HAProxy


sudo systemctl restart ocserv
sudo systemctl restart haproxy

Sekarang jalankan perintah berikut untuk memeriksa status mendengarkan pendengar. Anda akan melihat bahwa mereka berdua mendengarkan 127.0.0.1 Dan ::1.


sudo ss -lnpt | grep ocserv

sudo ss -lnpt | Anggur ocserv ipv6


Memeriksa konektivitas IPv6


Mulai ulang klien VPN Anda dan buka https://test-ipv6.com/ untuk memeriksa konektivitas IPv6 Anda. Jika semuanya berjalan dengan baik, Anda akan melihat alamat IPv4 dan IPv6 dari server VPN Anda sebagai hasil dari pengujian. Dan peringatan "VPN hanya melindungi satu protokol" harus dihapus.


Konektivitas IPv6 sering diuji untuk VPN


Jika Anda tidak melihat alamat IPv6 server VPN Anda sebagai hasil pengujian, Anda mungkin perlu memulai ulang klien VPN dan membangun kembali koneksi VPN.


Catatan: Klien VPN tidak boleh memiliki alamat IPv6 publik. Itu dapat menggunakan IPv6 di terowongan VPN IPv6.


Selesaikan itu


Saya harap tutorial ini membantu Anda menjalankan Open Connect VPN Server dan Apache / Enix dalam satu kotak. Seperti biasa, jika Anda merasa posting ini bermanfaat, berlangganan buletin gratis kami untuk mendapatkan lebih banyak tip dan trik. Hati hati


Beri nilai tutorial ini

[Total: 2 Average: 5]


Related Posts

There is no other posts in this category.

Subscribe Our Newsletter

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel