Cách bật hoặc tắt QUIC và HTTP/3

Tác giả NetworkEngineer, T.Mười 23, 2021, 09:14:18 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách bật hoặc tắt QUIC và HTTP/3


1. Cách bật QUIC và HTTP/3.

LiteSpeed ​​Web Server hỗ trợ HTTP/3. Trên thực tế, LiteSpeed ​​là người đầu tiên giới thiệu hỗ trợ máy chủ web HTTP/3 cấp sản xuất. Và khi giao thức mới tiếp tục được xác định, LiteSpeed luôn có mặt ở mọi bước, giữ cho việc triển khai của LiteSpeed luôn cập nhật và tiên tiến.

HTTP/3 là phiên bản mới nhất của Giao thức truyền siêu văn bản, trước đây được gọi là "HTTP qua QUIC" và là phiên bản kế thừa của HTTP/2.

QUIC ban đầu là một nỗ lực của Google để cải thiện HTTP/2 bằng cách vận chuyển nó được mã hóa qua UDP. Vào năm 2016, IETF đã bắt đầu làm việc để chuẩn hóa giao thức. Một phần của quá trình đó liên quan đến việc tách QUIC thành giao thức truyền tải (QUIC) và giao thức ứng dụng (HTTP/3). Để tìm hiểu thêm về nó, vui lòng xem thêm các câu hỏi thường gặp về HTTP/3.

Thật dễ dàng để bắt đầu sử dụng QUIC và HTTP/3 với Máy chủ Web LiteSpeed. Chỉ cần mở cổng UDP 443. QUIC được bật theo mặc định và kết nối HTT /3 sẽ tự động được thực hiện với các trình duyệt hỗ trợ nó. Không cần thay đổi cấu hình.

Mẹo: Đối với người dùng bảng điều khiển, QUIC được bật theo mặc định cho các vhosts Apache HTTPS. Tất cả những gì được yêu cầu là mở cổng UDP 443.

Yêu cầu:

  • HTTPS với chứng chỉ đáng tin cậy.
  • Cổng UDP 443 mở trên tường lửa.

1.1. Mở cổng UDP 443 trên Firewall.

QUIC chạy giao thức ghép kênh qua Bảo mật tầng truyền tải (TLS) trên UDP thay vì TCP. Đảm bảo rằng bạn đã bật cổng với cả TCP và UDP. Hầu hết thời gian, TCP 443 đã được kích hoạt.

Bạn có thể nhanh chóng kiểm tra để đảm bảo rằng nó đang lắng nghe bằng cách chạy lệnh sau.

Mã nguồn [Chọn]
$ netstat -lupn | grep 443

udp        0      0 127.0.0.1:443         0.0.0.0:*                               18918/litespeed (ls
udp        0      0 x.x.x.x:443           0.0.0.0:*                               18918/litespeed (ls
udp        0      0 :::443                :::*                                    18918/litespeed (ls


Bản thân QUIC sẽ tự động lắng nghe trên cổng UDP 443, nhưng bất kỳ tường lửa nào đang chạy phải được cấu hình để cổng 443 được mở.

Bạn sẽ cần xác định tường lửa nào đang chạy, chẳng hạn như firewalld, iptables, csf hoặc các tường lửa bên ngoài khác.

Khi sử dụng CSF.

Nếu CSF được sử dụng, bạn cần bật nó ở cấp CSF. Điều hướng đến ConfigServer Security & Firewall > csf - ConfigServer Firewall > Firewall Configuration > IPv4 Port Settings > và thêm 443 vào danh sách trong UDP_INUDP_OUT.


Đồng thời đảm bảo rằng UDPFLOOD được đặt thành tắt 0.

Khi sử dụng iptables.

Bật cổng 443 bằng các lệnh sau:

Mã nguồn [Chọn]
$ iptables -I INPUT -p udp --dport 443 -j ACCEPT
$ /sbin/service iptables save
$ /sbin/service iptables restart

1.2. Kiểm tra kết nối UDP đến và đi.

Mặc dù bạn đã bật UDP trên 443 trên máy chủ của mình, nó có thể bị trung tâm dữ liệu chặn ở cấp định tuyến, bộ chuyển mạch hoặc tường lửa. Để xác minh điều này, bạn có thể kiểm tra bằng phương pháp sau:

Bước 1: Sử dụng bất kỳ máy chủ nào khác có Cổng UDP 443 đang mở để gửi gói UDP 1 byte đến máy chủ của bạn nơi lưu trữ trang web của bạn.

Mã nguồn [Chọn]
$ nc -z -v -u YOUR_SERVER_IP 443
Bước 2: Kiểm tra trên máy chủ của bạn xem gói UDP có đến đúng máy chủ lưu trữ trang web hay không.
   
Mã nguồn [Chọn]
$ tcpdump -i eth0 -A -s0 port 443 and udp
Giao diện cổng mạng eth0 nên được thay thế bằng kết nối ethernet chính của máy chủ của bạn.

Đầu ra ở Bước 2 sẽ giống như thế này nếu gói được nhận chính xác.

Mã nguồn [Chọn]
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    09:09:57.124659 IP client-hostname.38227 > server-hostname.https: UDP, length 1
    [email protected]@..S...   ....................

Bạn cũng có thể đảo ngược máy chủ trong quá trình kiểm tra để kiểm tra kết nối UDP đi từ máy chủ của bạn đến máy chủ kiểm tra.

1.3. Xác minh QUIC và HTTP/3 đã được bật.

Bạn có thể kiểm tra trang web của chính mình hoặc bất kỳ trang web nào trên Internet bằng công cụ Kiểm tra HTTP/3 miễn phí. Nhập URL và Kiểm tra HTTP/3 sẽ cho bạn biết QUIC hoặc HTTP/3 có được trang web đó hỗ trợ hay không. Thông tin kết nối chi tiết, bao gồm tiêu đề HTTP và đầu ra QLOG cũng được cung cấp.
 
Một tùy chọn khác là tiện ích mở rộng Chrome HTTP/2 and SPDY indicator. Nó hiển thị một tia chớp trong thanh công cụ của Chrome. Màu xanh lam cho biết HTTP/2 được bật. Mặc dù phần mở rộng không thực sự được thiết kế để hiển thị việc sử dụng HTTP/3, nhưng bạn sẽ thấy tia chớp màu xanh lục khi HTTP/3 được sử dụng. Di chuột qua tia chớp để xem danh sách giao thức chi tiết hơn.

Mẹo: Bạn sẽ thấy QUIC indicator trên các trang động được làm mới thường xuyên. Nếu không, hãy nhấn CTRL + SHIFT + R để yêu cầu một bản sao mới của trang.


1.4. Danh sách kiểm tra khắc phục sự cố.

Nếu QUIC không hoạt với bạn, hãy ghi nhớ những yêu cầu sau:

  • Phải bật QUIC trong GUI/conf.
  • Phải sử dụng Chrome hoặc Opera có bật QUIC.
  • Phải không sử dụng chứng chỉ tự ký, chỉ chứng chỉ tin cậy mới hoạt động.
  • Phải cấu hình Cài đặt SSL chính xác.
  • Phải mở cổng UDP 443 trên tường lửa.
  • QUIC sẽ không hoạt động với giao diện người dùng proxy như CloudFlare.
  • QUIC sẽ chỉ áp dụng cho HTTPS, không phải HTTP.
  • QUIC có thể được bật ở cấp máy chủ, cấp listener hoặc cấp virtual host.
  • QUIC sẽ không hoạt động với LSWS 5.2.8 nữa vì Chrome chỉ nói "quic/43", trong khi LSWS 5.2.8 chỉ hỗ trợ tối đa "quic/39"

1.5. Ba cấp độ kiểm soát QUIC.

QUIC có thể được bật hoặc tắt ở ba cấp độ khác nhau: Virtual Host, Listener, and Server. Điều quan trọng là phải hiểu các cài đặt này ảnh hưởng đến nhau như thế nào. Nếu QUIC không được tắt rõ ràng ở bất kỳ cấp độ nào, thì ưu tiên bật QUIC sẽ được đưa ra ở cấp độ cụ thể nhất: Virtual Host, sau đó là Listener, sau đó là Server. Nếu QUIC là tắt ở bất kỳ cấp độ, sau đó không ai trong số các mức cụ thể hơn có thể bật tính năng này. Nói cách khác, nếu QUIC bị tắt ở cấp Server, thì nó không thể được bật ở cấp Listener hoặc ở cấp Virtual Host.

Nói một cách khác:

Đối với một Virtual Host cụ thể, QUIC sẽ là ON nếu:

  • Virtual Host = ON hoặc không được đặt AND
  • Listener = ON hoặc không được đặt AND
  • Server = ON hoặc không được đặt.

Đối với một Server cụ thể, QUIC sẽ là OFF nếu:

  • Virtual Host = OFF OR
  • Listener = OFF OR
  • Server  = OFF

Đây là một ví dụ thiết lập:


Nếu QUIC được bật, HTTP/3 sẽ tự động được sử dụng để gửi yêu cầu đến các trình duyệt hỗ trợ nó.

2. Cách tắt QUIC.

2.1. Cấp Server.

Đối với EA4: Thêm các dòng sau vào /etc/apache2/conf.d/includes/pre_main_global.conf

Mã nguồn [Chọn]
<IfModule LiteSpeed>
  QuicEnable off
</IfModule>

2.2. Cấp Virtual Host.

Đối với EA4: Tạo một tập tin quic_vhosts.conf trong /etc/apache2/conf.d/userdata/str/2_4/user/domain/ sau đó thêm các dòng sau.

Mã nguồn [Chọn]
<IfModule LiteSpeed>
  QuicEnable off
</IfModule>

Đối với một trang web SSL, hãy tạo quic_vhosts.conf trong /etc/apache2/conf.d/userdata/ssl/2_4/<user>/<domain>.

Nếu bạn muốn vô hiệu hóa QUIC cho một tài khoản bạn có thể tạo quic_vhosts.conf trong /etc/apache2/conf.d/userdata/ssl/2_4/<user>.

Sau khi những thay đổi này được thực hiện, hãy xây dựng lại Apache conf bằng lệnh sau:

Mã nguồn [Chọn]
$ /usr/local/cpanel/scripts/rebuildhttpdconf
Cuối cùng, khởi động lại LiteSpeed ​​Web Server.

3. Điều khiển HTTP/3 thông qua Apache Config.

Bạn có thể bật và tắt nhiều giao thức khác nhau bao gồm HTTP/3 và HTTP/2 trong httpd.conf, bằng cách sử dụng thẻ SpdyEnabled, như sau:

Mã nguồn [Chọn]
<IfModule LiteSpeed>
SpdyEnabled http3
</IfModule>

Thông số có giá trị khác là spdy2, spdy3, http2 và off.

Tất cả các giao thức được bật theo mặc định. Do đó, nếu bạn muốn sử dụng tất cả các giao thức SPDY, HTTP/2 và HTTP/3, thì không cần thẻ SpdyEnabled nào cả.

Mẹo: Khi bạn sử dụng thẻ này để bật rõ ràng một hoặc nhiều giao thức, mọi thứ không được chọn sẽ bị vô hiệu hóa. Ví dụ: SpdyEnabled http2 sẽ bật HTTP/2, trong khi SPDY và ​​HTTP/3 sẽ bị tắt. Hãy cẩn thận để không vô tình vô hiệu hóa một giao thức bạn muốn sử dụng.

3.1. Xử lý sự cố.

CloudFlare chưa hỗ trợ QUIC.

Xin lưu ý rằng CloudFlare hiện không hỗ trợ QUIC tại thời điểm viết bài này. Nếu bạn đứng sau CloudFlare, vui lòng tắt nó trước khi thử nghiệm / sử dụng QUIC.

Có thể Google Chrome chưa bật QUIC theo mặc định.

Tại một số điểm, chúng ta nhận thấy rằng Google Chrome đã quyết định tạm thời tắt QUIC theo mặc định. Một số người dùng rõ ràng phải bật QUIC trong chrome://flags. Điều này có thể không đúng với trường hợp của bạn, nhưng bạn nên kiểm tra xem QUIC đã được bật trong Chrome hay chưa.

Các chứng chỉ SSL được lưu trong bộ nhớ cache có thể không hợp lệ.

Đôi khi, đặc biệt là khi trang web được đề cập đã gặp lỗi SSL / TLS trước đó, Chrome sẽ lưu chứng chỉ trong bộ nhớ cache và khiến QUIC không thể thiết lập kết nối. Trong trường hợp này, nó chỉ có thể được khắc phục bằng cách xóa bộ nhớ cache của trình duyệt.

Tùy chọn giới hạn tốc độ UDP trong CSF sẽ bị tắt.

Nếu CSF được sử dụng, tùy chọn giới hạn tốc độ UDP thường bị tắt theo mặc định. Bạn sẽ thấy UDPFLOOD = "0". Tuy nhiên, nếu bạn đã bật nó bằng cách nào đó, hãy tắt nó trước khi chạy bất kỳ trình kiểm tra QUIC nào, chẳng hạn như http3check.net.

Mã nguồn [Chọn]
# Outgoing UDP Flood Protection. This option limits outbound UDP packet floods.
# These typically originate from exploit scripts uploaded through vulnerable
# web scripts. Care should be taken on servers that use services that utilise
# high levels of UDP outbound traffic, such as SNMP, so you may need to alter
# the UDPFLOOD_LIMIT and UDPFLOOD_BURST options to suit your environment
#
# We recommend enabling User ID Tracking (UID_INTERVAL) with this feature
UDPFLOOD = "0"
UDPFLOOD_LIMIT = "100/s"
UDPFLOOD_BURST = "500"
# This is a list of usernames that should not be rate limited, such as "named"
# to prevent bind traffic from being limited.
#
# Note: root (UID:0) is always allowed
UDPFLOOD_ALLOWUSER = "named"


LF_SPI cần được tắt khi CSF được sử dụng.

LF_SPI trong CSF nên được tắt (LF_SPI= 0).

Theo CFS, LF_SPI tùy chọn cấu hình CSF iptables làm tường lửa Kiểm tra gói trạng thái (SPI) làm mặc định (có nghĩa là LF_SPI = 1). Nếu máy chủ có Kernel theo dõi kết nối trạng thái bị hỏng thì cài đặt này có thể được đặt 0 để cấu hình CSF iptables trở thành tường lửa tĩnh, mặc dù chắc chắn sẽ bị mất một số tính năng và bảo mật.