Thứ ba, 01/04/2014 | 00:00 GMT+7

Cách cấu hình công cụ để sử dụng IPv6 trên VPS Linux

IPv6 là version mới nhất của giao thức IP mà toàn bộ internet dựa vào để kết nối với các địa điểm khác (giao thức IP hơi thừa vì IP là viết tắt của giao thức internet, nhưng ta sẽ sử dụng nó vì nó dễ dàng). Mặc dù IPv4 vẫn đang được sử dụng ở nhiều khu vực trên thế giới, không gian địa chỉ IPv4 đang được sử dụng với tốc độ nhanh và nó không đủ lớn để duy trì việc triển khai nhanh chóng các thiết bị có sẵn internet.

IPv6 sẽ giải quyết những vấn đề này. Cũng như thực hiện các cải tiến chung về giao thức, lợi ích rõ ràng nhất của việc sử dụng địa chỉ IPv6 là nó có không gian địa chỉ lớn hơn nhiều . Trong khi IPv4 cho phép 2 ^ 32 địa chỉ (với một số địa chỉ dành riêng cho các mục đích đặc biệt), thì không gian địa chỉ IPv6 cho phép 2 ^ 128 địa chỉ, đây là một sự gia tăng đáng kinh ngạc.

Mặc dù IPv6 mở ra rất nhiều cơ hội và giải quyết nhiều vấn đề tồn tại lâu nay, nhưng nó đòi hỏi một chút điều chỉnh đối với một số cấu hình mạng thông thường của bạn nếu bạn đã quen sử dụng riêng IPv4. Trong hướng dẫn này, ta sẽ nói về một số bản sao của IPv6 với một số công cụ và tiện ích IPv4 phổ biến và thảo luận cách cấu hình một số dịch vụ phổ biến để sử dụng IPv6.

Chẩn đoán mạng tầm thường với IPv6

Một số tiện ích đơn giản nhất được sử dụng để chẩn đoán sự cố mạng đã được tạo ra với IPv4. Để giải quyết vấn đề này, ta có thể sử dụng anh em họ IPv6 của chúng khi ta muốn xử lý lưu lượng IPv6.

Trước hết, để xem các địa chỉ IPv6 hiện được cấu hình cho server của bạn, bạn có thể sử dụng các công cụ iproute2 để hiển thị cho bạn các địa chỉ được cấu hình hiện tại:

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 bằng 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 các công cụ iproute2 hơn, bạn có thể nhận được thông tin tương tự bằng 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  

Đến đây bạn đã biết về cách lấy một số thông tin IPv6 của riêng mình, hãy cùng tìm hiểu một chút về cách sử dụng một số công cụ hoạt động với IPv6.

Lệnh ping phổ biến thực sự là dành riêng cho IPv4. Phiên bản IPv6 của lệnh, hoạt động giống hệt nhau nhưng đối với địa chỉ IPv6, được đặt tên là ping6 không có gì đáng ngạc nhiên. Điều này sẽ ping giao diện loopback local :

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 , điều này hoạt động chính xác như mong đợi, sự khác biệt duy nhất là version giao thức đang được sử dụng để định địa chỉ.

Một công cụ khác mà bạn có thể dựa vào là theo traceroute . Cũng có sẵn một IPv6 tương đương:

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 

Bạn có thể quen với là lệnh tracepath . Điều này theo sau ví dụ về các lệnh khác cho version 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 truy cập khi nó đi vào máy của bạn, chương trình tcpdump thường được sử dụng. Ta có thể nhận tiện ích này để chỉ hiển thị lưu lượng IPv6 của ta bằng cách lọc nó với biểu thức ip6 or proto ipv6 sau các tùy chọn của ta .

Ví dụ: ta có thể đo lưu lượng IPv6 đang lưu chuyển nhanh chóng một cách dễ dàng bằng cách yêu cầu công cụ chỉ nắm bắt thông tin mà ta quan tâm. Ta có thể sử dụng lệnh này như được thực hiện từ đây để chỉ thu thập bản tóm tắt thông tin nhằm tránh làm chậm kết quả:

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 domain của bạn bằng cách sử dụ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 bản ghi AAAA , được sử dụng cho địa chỉ IPv6 thay vì bản ghi A , chỉ được sử dụng để ánh xạ IPv4.

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

host -t AAAA google.com 

google.com has IPv6 address 2404:6800:4003:803::1004 

Nếu bạn muốn sử dụng dig , bạn có thể nhận được kết quả tương tự bằng cách sử dụng cú pháp sau:

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 , việc kiểm tra xem DNS của bạn có đang phân giải chính xác cho các domain của bạn hay không cũng dễ dàng như khi bạn đang 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 thông thường của bạn phải có khả năng xử lý lưu lượng IPv6. Đôi khi, họ cần các cờ hoặc cú pháp đặc biệt và những lần khác, họ cung cấp một triển khai 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 đị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 

ListenAddress chỉ định địa chỉ mà daemon SSH sẽ liên kết với. Đối với địa chỉ IPv4, nó trông giống như sau:

ListenAddress 111.111.111.111:22 

Điều này sẽ 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ể thực hiện tương tự bằng cách đặt địa chỉ trong dấu ngoặc vuông:

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

Điều này yêu cầu trình SSH lắng nghe địa chỉ 1341:8954:a389:33:ba33::1 trên cổng 22. Bạn có thể yêu cầu nó lắng nghe tất cả các địa chỉ IPv6 có sẵn bằng lệnh :

ListenAddress :: 

Hãy nhớ reload daemon sau khi bạn đã áp dụng các thay đổi :

sudo service ssh restart 

Về phía client , nếu daemon mà bạn đang kết nối được cấu hình để lắng nghe bằng IPv4 IPv6, bạn có thể buộc client chỉ sử dụng IPv6 bằng cách sử dụng cờ -6 , như sau:

ssh -6 username@host.com 

Cấu hình web server

Tương tự như daemon SSH, web server cũng phải được cấu hình để lắng nghe địa chỉ IPv6.

Trong Apache, bạn có thể cấu hình server để 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 sau:

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

Điều này yêu cầu server lắng nghe địa chỉ cụ thể này trên cổng 80. Ta có thể kết hợp địa chỉ này với địa chỉ IPv4 để cho phép linh hoạt hơn như sau:

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

Trên thực tế, nếu bạn muốn lắng nghe các kết nối trên tất cả các giao diện trong tất cả các giao thức trên cổng 80, bạn có thể sử dụng:

Listen 80 

Ở cấp độ server ảo, bạn cũng có thể chỉ định địa chỉ IPv6. Tại đây, bạn có thể thấy rằng có thể cấu hình server ảo để khớp cho cả địa chỉ IPv4 và địa chỉ IPv6:

<VirtualHost 111.111.111.111:80, [1341:8954:a389:33:ba33::1]:80>     . . . </VirtualHost> 

Hãy nhớ khởi động lại dịch vụ để áp dụng các thay đổi :

sudo service apache2 restart 

Nếu bạn muốn sử dụng Nginx làm web server của bạn , ta có thể triển khai các cấu hình tương tự. Đối với lệnh lắng nghe, ta có thể sử dụng lệnh này cho lưu lượng IPv6:

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

Trong Linux, điều này thực sự cũng cho phép lưu lượng IPv4 trên cổng 80 vì nó tự động ánh xạ các yêu cầu IPv4 tới địa chỉ IPv6. Điều này thực sự ngăn bạn chỉ định địa chỉ IPv6 và địa chỉ IPv4 riêng biệt như sau:

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

Điều này sẽ dẫn đến lỗi nói rằng cổng đã được liên kết với một dịch vụ khác. Nếu bạn muốn sử dụng các lệnh riêng biệt như thế này, bạn phải tắt chức năng này bằng cách sử dụng sysctl như sau:

sysctl -w net.ipv6.bindv6only=1 

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

sudo nano /etc/sysctl.conf 

. . . net.ipv6.bindv6only=1 

Sau đó, bạn có thể sử dụng cấu hình tương tự với cấu hình bị lỗi trước đó bằng cách thêm ipv6only=on lệnh lắng nghe IPv6:

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

, hãy khởi động lại Nginx để áp dụng các 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 luật firewall của bạn bằng cách sử dụng giao diện user cấu hình netfilter như iptables , bạn sẽ rất vui khi biết rằng có một công cụ tương đương được gọi là ip6tables .

Ta có một hướng dẫn ở đây về cách cấu hình iptables cho Ubuntu tại đây.

Đối với biến thể IPv6, bạn có thể chỉ cần thay thế lệnh bằng ip6tables để quản lý các luật lọc gói IPv6. Ví dụ: để liệt kê các luật IPv6, có thể chạy lệnh:

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 đang sử dụng công cụ ufw , thì xin chúc mừng, bạn đã hoàn tất! Công cụ ufw cấu hình cả hai ngăn xếp cùng một lúc trừ khi được chỉ định khác. Bạn có thể phải thêm luật cho các địa chỉ IPv6 cụ thể của bạn , nhưng bạn sẽ không phải sử dụng một 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 trình gói TCP

Nếu bạn sử dụng hàm bao TCP để kiểm soát truy cập vào server của bạn thông qua /etc/hosts.allow/etc/hosts.deny file, bạn chỉ có thể sử dụng cú pháp IPv6 để phù hợp với luật nguồn nhất định.

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

sudo nano /etc/hosts.allow 

. . . sshd: 111.111.0.0/255.255.254.0, [1341:8954:a389:33::]/64 

Như bạn thấy , rất dễ dàng điều chỉnh các luật shell bọc TCP hiện tại của bạn để áp dụng cho địa chỉ IPv6. Bạn có thể tìm hiểu thêm về cách định dạng địa chỉ IP và mạng con tại đây.

Kết luận

Hy vọng rằng bây giờ bạn nhận ra rằng việc chuyển đổi sang IPv6 hoặc tận dụng lợi thế của IPv6 ngoài IPv4 là một quá trình khá đơn giản.

Bạn sẽ phải điều tra cụ thể bất kỳ dịch vụ mạng nào mà bạn sử dụng để tìm hiểu xem có bất kỳ thay đổi cấu hình bổ sung nào cần thiết để sử dụng chính xác tài nguyên IPv6 của bạn hay không. Tuy nhiên, bây giờ bạn sẽ cảm thấy thoải mái hơn khi làm việc với IPv6 với các tiện ích và dịch vụ cơ bản nhất của bạn .

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách cấu hình mail server bằng Postfix, Dovecot, MySQL và SpamAssassin
2014-04-01
Cách cấu hình mail server bằng Postfix, Dovecot, MySQL và SpamAssassin
2014-04-01
Cách điều chỉnh cấu hình SSH Daemon của bạn trên VPS Linux
2014-03-26
Cách xác thực người dùng với server SSH bằng Monkeysphere trên VPS Ubuntu
2014-03-24
Cách xác thực danh tính server SSH với Monkeysphere trên VPS Ubuntu
2014-03-24
Cách thiết lập DNSSEC trên server DNS BIND ủy quyền
2014-03-19
Cách thiết lập DNSSEC trên server DNS BIND ủy quyền
2014-03-19
Cách cài đặt TrueCrypt (CLI) trên Linux
2014-03-17
Cách sử dụng Công cụ IPRoute2 để quản lý cấu hình mạng trên VPS Linux
2014-03-11
Cách sử dụng các lệnh và mở rộng lịch sử Bash trên VPS Linux
2014-03-05