Cách Cấu Hình và Sử Dụng IPv6 Trên Linux VPS Chi Tiết Nhất

Cách Cấu Hình và Sử Dụng IPv6 Trên Linux VPS

IPv6 là phiên bản mới nhất của giao thức IP, đóng vai trò quan trọng trong việc kết nối các địa điểm trên internet (tên gọi “IP protocol” thực chất là thừa vì IP đã là viết tắt của Internet Protocol, nhưng cách gọi này vẫn phổ biến vì dễ hiểu). Mặc dù IPv4 vẫn được sử dụng rộng rãi trên thế giới, không gian địa chỉ IPv4 đang dần cạn kiệt và không đủ để đáp ứng nhu cầu kết nối thiết bị ngày càng tăng.

IPv6 được thiết kế để giải quyết vấn đề này. Lợi ích lớn nhất khi sử dụng IPv6 là không gian địa chỉ rộng lớn, có thể cung cấp tới 2^128 địa chỉ, vượt trội hơn nhiều so với 2^32 địa chỉ của IPv4 (mặc dù một số địa chỉ IPv4 đã được dành riêng cho các mục đích đặc biệt).

Nếu bạn đang tìm kiếm giải pháp tối ưu chi phí cho dự án trực tuyến, việc sử dụng VPS giá rẻ sẽ giúp bạn triển khai nhanh chóng với hiệu suất cao. Khám phá các gói VPS giá rẻ tại [danh mục VPS giá rẻ] để bắt đầu cấu hình IPv6 trên Linux VPS ngay hôm nay!

Mặc dù IPv6 mang lại nhiều cơ hội và giải quyết vấn đề tắc nghẽn không gian địa chỉ, việc chuyển từ IPv4 sang IPv6 có thể yêu cầu một số điều chỉnh, đặc biệt nếu bạn đã quen với việc sử dụng IPv4. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các công cụ và tiện ích tương đương dành cho IPv4 trong môi trường IPv6, cũng như cách cấu hình các dịch vụ phổ biến để hỗ trợ IPv6.

Chẩn đoán mạng đơn giản với IPv6

Một số tiện ích đơn giản dùng để chẩn đoán sự cố mạng được tạo ra với IPv4 làm cơ sở. Để xử lý vấn đề này, ta có thể sử dụng phiên bản “con” của chúng dành cho IPv6 khi muốn xử lý lưu lượng IPv6.

Đầu tiên, để xem các địa chỉ IPv6 hiện được cấu hình trên máy chủ của bạn, bạn có thể sử dụng các công cụ của iproute2 như sau:

ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2400:6180:0:d0::41f/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::601:15ff:fe43:b201/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::601:15ff:fe43:b202/64 scope link 
       valid_lft forever preferred_lft forever

Để in ra bảng định tuyến IPv6, bạn có thể sử dụng netstat với lệnh như sau:

netstat -A inet6 -rn
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
2400:6180:0:d0::/64            ::                         U    256 0     1 eth0
fe80::/64                      ::                         U    256 0     0 eth1
fe80::/64                      ::                         U    256 0     0 eth0
::/0                           2400:6180:0:d0::1          UG   1024 0     0 eth0
::/0                           ::                         !n   -1  1    90 lo
::1/128                        ::                         Un   0   1    20 lo
2400:6180:0:d0::41f/128        ::                         Un   0   1    86 lo
fe80::601:15ff:fe43:b201/128   ::                         Un   0   1    75 lo
fe80::601:15ff:fe43:b202/128   ::                         Un   0   1     0 lo
ff00::/8                       ::                         U    256 0     0 eth1
ff00::/8                       ::                         U    256 0     0 eth0
::/0                           ::                         !n   -1  1    90 lo

Nếu bạn thích dùng công cụ iproute2, bạn có thể nhận được thông tin tương tự với lệnh:

ip -6 route show
2400:6180:0:d0::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth1  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 
default via 2400:6180:0:d0::1 dev eth0  metric 1024

Giờ đây, khi bạn đã biết cách lấy thông tin IPv6 của riêng mình, hãy cùng tìm hiểu cách sử dụng một số công cụ hỗ trợ IPv6.

Lệnh ping phổ biến vốn được thiết kế cho IPv4. Phiên bản của lệnh cho IPv6, hoạt động hoàn toàn giống nhau nhưng dùng địa chỉ IPv6, được đặt tên là ping6. Ví dụ, lệnh sau sẽ ping giao diện loopback cục bộ:

ping6 -c 3 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.022 ms

--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.021/0.023/0.028/0.006 ms

Như bạn thấy, lệnh hoạt động như mong đợi, chỉ khác ở phiên bản giao thức dùng cho địa chỉ.

Một công cụ khác mà bạn có thể sử dụng là traceroute. Cũng có phiên bản dành cho IPv6:

traceroute6 google.com
traceroute to google.com (2404:6800:4003:803::1006) from 2400:6180:0:d0::41f, 30 hops max, 24 byte packets
 1  2400:6180:0:d0:ffff:ffff:ffff:fff1 (2400:6180:0:d0:ffff:ffff:ffff:fff1)  0.993 ms  1.034 ms  0.791 ms
 2  2400:6180::501 (2400:6180::501)  0.613 ms  0.636 ms  0.557 ms
 3  2400:6180::302 (2400:6180::302)  0.604 ms  0.506 ms  0.561 ms
 4  10gigabitethernet1-1.core1.sin1.he.net (2001:de8:4::6939:1)  6.21 ms  10.869 ms  1.249 ms
 5  15169.sgw.equinix.com (2001:de8:4::1:5169:1)  1.522 ms  1.205 ms  1.165 ms
 6  2001:4860::1:0:337f (2001:4860::1:0:337f)  2.131 ms  2.164 ms  2.109 ms
 7  2001:4860:0:1::523 (2001:4860:0:1::523)  2.266 ms  2.18 ms  2.02 ms
 8  2404:6800:8000:1c::8 (2404:6800:8000:1c::8)  1.741 ms  1.846 ms  1.895 ms

Có lẽ bạn cũng đã quen với lệnh tracepath. Nó cũng có phiên bản cho IPv6:

tracepath6 ::1
1?: [LOCALHOST]                        0.045ms pmtu 65536
1:  ip6-localhost                                         0.189ms reached
1:  ip6-localhost                                         0.110ms reached
    Resume: pmtu 65536 hops 1 back 64

Nếu bạn cần theo dõi lưu lượng khi nó đi vào máy, chương trình tcpdump thường được sử dụng. Bạn có thể lọc chỉ lưu lượng IPv6 bằng cách sử dụng biểu thức “ip6” hoặc “proto ipv6” sau các tham số. Ví dụ, để nhanh chóng thu thập một bản tóm tắt thông tin mà không làm chậm output, bạn có thể dùng:

tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6

Kiểm tra thông tin DNS IPv6

Bạn có thể dễ dàng kiểm tra thông tin DNS cho các miền của mình bằng các công cụ thông thường. Sự khác biệt chính là bạn có thể sẽ yêu cầu các bản ghi AAAA, dùng cho địa chỉ IPv6 thay vì các bản ghi A dùng cho ánh xạ IPv4.

Để truy xuất bản ghi địa chỉ IPv6 cho một miền, bạn chỉ cần yêu cầu bản ghi AAAA. Với lệnh host, bạn thực hiện như sau:

host -t AAAA google.com
google.com has IPv6 address 2404:6800:4003:803::1004

Nếu bạn thích dùng lệnh dig, kết quả tương tự có thể lấy được với cú pháp:

dig google.com AAAA
; <<>> DiG 9.8.1-P1 <<>> google.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14826
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	AAAA

;; ANSWER SECTION:
google.com.		299	IN	AAAA	2404:6800:4003:803::1006

;; Query time: 5 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Tue Apr  1 13:59:23 2014
;; MSG SIZE  rcvd: 56

Như bạn thấy, kiểm tra DNS cho các miền của mình cũng đơn giản như khi làm việc với địa chỉ IPv6.

Dịch vụ mạng với IPv6

Hầu hết các dịch vụ mạng phổ biến của bạn đều có khả năng xử lý lưu lượng IPv6. Đôi khi, chúng cần các tham số đặc biệt hoặc cú pháp khác, và có lúc lại cung cấp phiên bản thay thế dành riêng cho IPv6.

Cấu hình SSH

Đối với SSH, daemon có thể được cấu hình để lắng nghe trên địa chỉ IPv6. Điều này được kiểm soát trong file cấu hình mà bạn có thể mở bằng:

sudo nano /etc/ssh/sshd_config

Directive ListenAddress chỉ định địa chỉ mà daemon SSH sẽ bind. Với địa chỉ IPv4, nó trông như sau:

ListenAddress 111.111.111.111:22

Dòng trên lắng nghe địa chỉ IPv4 111.111.111.111 trên cổng 22. Đối với địa chỉ IPv6, bạn có thể làm tương tự bằng cách đặt địa chỉ trong ngoặc vuông:

ListenAddress [1341:8954:a389:33:ba33::1]:22

Dòng này báo cho daemon SSH rằng hãy lắng nghe địa chỉ 1341:8954:a389:33:ba33::1 trên cổng 22. Bạn có thể chỉ định lắng nghe tất cả các địa chỉ IPv6 bằng cách sử dụng:

ListenAddress ::

Nhớ reload daemon sau khi thay đổi:

sudo service ssh restart
Ở phía client, nếu daemon mà bạn kết nối được cấu hình lắng nghe cả IPv4 và IPv6, bạn có thể ép client sử dụng IPv6 bằng cách dùng tham số -6, ví dụ:
bash
ssh -6 username@host.com

Cấu hình máy chủ web

Tương tự như daemon SSH, máy chủ web cũng cần được cấu hình để lắng nghe trên các địa chỉ IPv6.

Trong Apache, bạn có thể cấu hình máy chủ để phản hồi các yêu cầu trên một địa chỉ IPv6 nhất định bằng cú pháp:

Listen [1341:8954:a389:33:ba33::1]:80

Dòng này chỉ thị máy chủ lắng nghe địa chỉ cụ thể đó trên cổng 80. Bạn có thể kết hợp với một địa chỉ IPv4 để tăng tính linh hoạt như sau:

Listen 111.111.111.111:80
Listen [1341:8954:a389:33:ba33::1]:80

Trong thực tế, nếu bạn muốn lắng nghe kết nối trên tất cả các giao diện và tất cả các giao thức trên cổng 80, bạn chỉ cần sử dụng:

Listen 80

Ở mức virtualhost, bạn cũng có thể chỉ định địa chỉ IPv6. Ví dụ, bạn có thể cấu hình một virtualhost cho cả địa chỉ IPv4 và IPv6 như sau:

<VirtualHost 111.111.111.111:80, [1341:8954:a389:33:ba33::1]:80>
    . . .
</VirtualHost>
Nhớ restart dịch vụ để áp dụng thay đổi:
sudo service apache2 restart

Nếu bạn thích dùng Nginx làm máy chủ web, cấu hình tương tự cũng có thể thực hiện được. Với directive listen, bạn dùng cú pháp sau cho lưu lượng IPv6:

listen [1341:8954:a389:33:ba33::1]:80;

Trong Linux, lệnh này tự động kích hoạt lưu lượng IPv4 trên cổng 80 vì nó ánh xạ các yêu cầu IPv4 sang địa chỉ IPv6. Điều này khiến bạn không thể chỉ định riêng biệt một địa chỉ IPv6 và một địa chỉ IPv4 như sau:

listen [1341:8954:a389:33:ba33::1]:80;
listen 111.111.111.111:80;

Lệnh trên sẽ gây lỗi vì cổng đã được chiếm bởi một dịch vụ khác. Nếu bạn muốn dùng các directive riêng biệt, bạn phải tắt tính năng này bằng sysctl:

sysctl -w net.ipv6.bindv6only=1

Bạn có thể đảm bảo lệnh này được tự động áp dụng khi khởi động bằng cách thêm nó vào file /etc/sysctl.conf:

sudo nano /etc/sysctl.conf
. . .
net.ipv6.bindv6only=1

Sau đó, bạn có thể dùng cấu hình tương tự như cấu hình trước đó bằng cách thêm tham số ipv6only=on vào directive lắng nghe của IPv6:

listen [1341:8954:a389:33:ba33::1]:80 ipv6only=on;
listen 111.111.111.111:80;

Nhớ restart Nginx để áp dụng thay đổi:

sudo service nginx restart

Cấu hình firewall

Nếu bạn quen với việc cấu hình các quy tắc firewall sử dụng các công cụ front-end như iptables, thì tin vui là có công cụ tương đương dành cho IPv6 có tên ip6tables.

Chúng tôi có một hướng dẫn về cách cấu hình iptables cho Ubuntu tại đây.
Đối với phiên bản IPv6, bạn chỉ cần thay thế lệnh bằng ip6tables để quản lý các quy tắc lọc gói IPv6. Ví dụ, để liệt kê các quy tắc IPv6, bạn có thể nhập:

sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nếu bạn sử dụng công cụ ufw, thì chúc mừng bạn – mọi thứ đã được cấu hình cho cả hai giao thức cùng lúc, trừ khi bạn chỉ định khác. Có thể bạn phải thêm các quy tắc cho các địa chỉ IPv6 cụ thể, nhưng bạn sẽ không cần sử dụng công cụ khác.

Bạn có thể tìm hiểu thêm về cách sử dụng ufw tại đây.

Cấu hình TCP wrappers

Nếu bạn dùng TCP wrappers để kiểm soát quyền truy cập vào máy chủ thông qua các file /etc/hosts.allow và /etc/hosts.deny, bạn có thể đơn giản sử dụng cú pháp IPv6 để chỉ định các quy tắc nguồn.

Ví dụ, bạn có thể cho phép chỉ một địa chỉ IPv4 và một địa chỉ IPv6 kết nối qua SSH bằng cách chỉnh sửa file /etc/hosts.allow như sau:

sudo nano /etc/hosts.allow
. . .
sshd: 111.111.0.0/255.255.254.0, [1341:8954:a389:33::]/64

Như bạn thấy, việc điều chỉnh các quy tắc TCP wrappers để áp dụng cho địa chỉ IPv6 rất đơn giản. Bạn có thể tìm hiểu thêm cách định dạng địa chỉ IP và subnet tại đây.

Kết luận

Hy vọng rằng bạn đã nhận thấy rằng việc chuyển đổi sang IPv6 hoặc sử dụng IPv6 song song với IPv4 thực tế không quá phức tạp.

Tuy nhiên, bạn vẫn cần kiểm tra các dịch vụ mạng mà mình đang sử dụng để xác định xem có cần thay đổi cấu hình bổ sung nào để tận dụng đầy đủ các tài nguyên IPv6 hay không. Với kiến thức về các tiện ích và dịch vụ cơ bản nhất, bạn giờ đây sẽ cảm thấy tự tin hơn khi làm việc với IPv6.

Để tận dụng IPv6 hiệu quả, việc thuê VPS chất lượng là yếu tố then chốt. Các dịch vụ thuê VPS tại DataOnline cung cấp cấu hình mạnh mẽ, hỗ trợ IPv6 dễ dàng, giúp bạn tối ưu hóa kết nối mạng và bảo mật cho dự án của mình.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *