Khá nhiều dịch vụ hosting hiện nay có tùy chọn không dùng IPv4 để tiết kiệm (thường cũng được $0.5-$1/month), một vài dịch vụ thậm chỉ bán các VPS only IPv6 để giảm giá thành xuống 😀 thi thoảng giá rẻ quá, kiểu $25/1 năm mà 2 vCore, 8Gb RAM, 160 Gb SSD thì cũng khó mà từ chối được, mua xong mới thấy khoản cấu hình lú hết cả người, lúc này ưu điểm của giá rẻ nó không còn xứng đáng nữa
Góc độ cá nhân thì mình vẫn thấy IPv6 là một cái gì đó quá xa rời thế giới thực, khó cấu hình, tương thích kém, cái quan trọng nhất, là các dịch vụ siêu to khổng lồ với vô vàn công nghệ tiến bộ như Cloudflare, Google …. cũng vẫn rất rén với IPv6, rất nhiều thứ họ đang làm chỉ chạy tốt trên IPv4
Các câu lệnh bên dưới mình dùng cho Ubuntu 22.04, các OS khác thì không chắc có chạy không hé
Login SSH
Việc login bằng IPv6 cũng tương tự như IPv4, vấn đề là máy mình thiết lập mạng đều trên IPv4, đâm ra kết nối vào …. không được 😀 đành phải bật WARP lên thì mới kết nối được
Cập nhập OS
sudo apt update && sudo apt upgrade -y && sudo reboot
Cài đặt clatd để kết nối tới IPv4
Đoạn code bên dưới mình sửa lại từ bài gốc tại đây, chạy 1 dòng là đủ
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/vps-ipv6-only/main/setup.sh -O ipv6.sh && sudo chmod +x ipv6.sh && sudo ./ipv6.sh
Lúc này thì đã có thể chạy các tool ping, speedtest, benchmark bình thường như khi dùng IPv4
curl -4 google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
Giải thích 1 chút ở công đoạn cài đặt clatd
sudo rm /etc/resolv.conf echo -e "nameserver 2001:67c:2b0::4\nnameserver 2001:67c:2b0::6" > /etc/resolv.conf sudo chattr +i /etc/resolv.conf
Nameserver mình đã khóa cứng, dùng dịch vụ DNS64 của TREX, mục đích của 3 dòng code này là để tránh tình huống khi reboot lại VPS, nó tự xóa nameserver, mất tác dụng của DNS64
Các dịch vụ DNS64 của Google, Cloudflare thì không có tác dụng, nên phải dùng từ TREX, 1 công ty của Phần Lan
Ở Việt Nam ping tới 2 IP này khá là chua, trung bình > 250ms lận, còn cao hơn cả ping tới US
Cài đặt Webserver
Khá hiếm các tool, script dạng Control Panel hỗ trợ IPv6, may mà các script chạy trực tiếp lệnh trên SSH vẫn dùng ổn, cụ thể là Webinoly
Add record AAAA, trỏ về IP của VPS như thông thường là được, Cloudflare DNS hỗ trợ tốt các kết nối IPv4 và IPv6
Cài đặt Cloudflare Tunnels cho IPv6
Trong trường hợp bạn thích dùng Tunnels thay vì add các record AAAA thì có thể cấu hình như bên dưới
Cài đặt Tunnel như bình thường
2023-09-09T02:47:40Z INF Using Systemd
Lúc này mặc định Cloudflare chạy trên IPv4 nên nó sẽ treo cứng ở dòng INF Using Systemd, Ctrl + C để thoát ra, sau đó chạy dòng code bên dưới:
nano /etc/systemd/system/cloudflared.service
Ở dòng ExecStart=/usr/bin/cloudflared thêm vào --edge-ip-version 6
Ctrl+O -> Enter -> Ctrl+X để save và exit.
Khởi động lại cloudflared
service cloudflared restart
Quay lại Cloudflare Tunnels, sẽ thấy Connected thành công
Add thêm domain:port, tùy chỉnh như bình thường
Thử nghiệm
Cài đặt 1 trang WordPress cơ bản thì các thứ khá bình thường
Kết nối qua IPv4 các trang như Google, Youtube, Github …. ổn, không gặp vấn đề gì, khách vào trang chỉ dùng IPv4 cũng kết nối bình thường
Vấn đề tốc độ, lý thuyết dùng DNS64 của TREX, sẽ tạo thêm độ trễ lúc phân giải tên miền, mỗi cái con số nó loạn quá, nên mình cũng không chắc do TREX hay do VPS đang thử nghiệm
Cụ thể bạn có thể thấy trong ảnh là 1 con VPS tại Sing, ping về Sing hay Japan rất đúng, nhưng ping về Việt Nam, cụm thì 60ms, cụm thì hú lên 400ms 😀
Về tốc độ thì có lúc mình thử thấy Upload, Download lên rất cao ~ 2000Mbps, lúc thì thấp tè ~ 100Mbps 😀 thử trực tiếp bằng mạng VNPT đang sử dụng thì cũng download max speed, khoảng 15Mb/s
Tạm sau khi thử 1 con VPS only IPv6 thì mình nghĩ là mọi người nên né ra, tiết kiệm được 1 xíu mà thời gian bỏ ra để xử lý vấn đề quá sức là ngu người, chạy webserver còn đỡ, chứ chạy VPN, Socks, Proxy, Docker hay tạo Cache …. thì phát ốm với chuyện cấu hình luôn
Mỗi dòng lệnh bạn thấy trong bài này, gần như lệnh nào mình cũng phải google lú hết cả người để tìm giải pháp 😀
Mất công làm nên tiện viết thành 1 bài, bạn nào dùng VPS mà chỉ có IPv6 thì có thể làm theo 😀