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.
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.
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.
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
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
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.
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
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.
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