Định cấu hình địa chỉ IPv6 và khắc phục sự cố cơ bản trong Linux

Tác giả sysadmin, T.M.Hai 30, 2022, 10:53:41 SÁNG

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

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

Định cấu hình địa chỉ IPv6 và khắc phục sự cố cơ bản trong Linux


Trước đây, nhiều quản trị viên hệ thống chỉ đơn giản là vô hiệu hóa IPv6 thay vì định cấu hình nó đúng cách, tiếp tục dựa vào IPv4 cũ hơn vốn đã hoạt động tốt trong một thời gian rất dài. Vì không gian địa chỉ IPv4 đã cạn kiệt, các quản trị viên bắt đầu từ từ sử dụng IPv6 khi không cần thiết.

Ở đây chúng tôi sẽ giới thiệu cách định cấu hình địa chỉ IPv6 trong Linux và cung cấp một số mẹo và lời khuyên cơ bản để khắc phục sự cố mạng IPv6.

Trong ví dụ này, chúng tôi đang làm việc với CentOS 7.

1. Định cấu hình địa chỉ IPv6

Địa chỉ IPv6 có thể được định cấu hình theo một số cách bổ sung khi so sánh với IPv4, một số cách này được liệt kê bên dưới.

  • Cấu hình thủ công: Điều này khá giống với cách IPv4 được cấu hình thủ công, về cơ bản, chúng tôi chỉnh sửa thủ công tệp giao diện ở định dạng /etc/sysconfig/network-scripts/ifcfg-<interface>.
  • DHCPv6: Giao thức máy chủ động Phiên bản 6 tương tự như DHCP cho IPv4 ở chỗ nó sẽ tự động định cấu hình giao diện của chúng tôi.
  • Tự động định cấu hình địa chỉ không trạng thái (SLAAC): Điều này hoạt động tương tự như DHCP, tuy nhiên nó hoạt động bằng cách nhận thông báo quảng cáo bộ định tuyến từ bộ định tuyến IPv6 cục bộ trên mạng.

Ở đây, chúng tôi sẽ chủ yếu tập trung vào cấu hình mạng IPv6 thủ công.

2. Cấu hình IPv6 thủ công

Trước tiên, hãy xem trong thư mục /etc/sysconfig/network-scripts/ để xem liệu đã có cấu hình IPv6 cho giao diện cụ thể được đề cập chưa. Tên tệp sẽ được liệt kê dưới dạng ifcfg-<giao diện>, bạn có thể xác nhận tên giao diện bằng cách chạy 'ip a' hoặc 'ifconfig' không dùng nữa. Các tên điển hình có thể bao gồm eth0 hoặc định dạng 'eno*' mới hơn, chẳng hạn như eno16777736. Tệp này có thể chứa cả cấu hình IPv4 và IPv6 cho cùng một giao diện.

Dưới đây là cấu hình của tệp CentOS 7 /etc/sysconfig/network-scripts/ifcfg-eno16777736 của tôi, lưu ý các cài đặt bắt đầu bằng "IPV6".

  • IPV6INIT=yes – Điều này cần thiết khi định cấu hình IPv6 trên giao diện.
  • IPV6ADDR=<ipv6-address> – Chỉ định địa chỉ IPv6 tĩnh chính.
  • IPV6_DEFAULTGW=<ipv6-address>%eno16777736 – Thêm tuyến đường mặc định thông qua giao diện được chỉ định.

Lưu ý rằng nếu bạn chỉnh sửa các tệp này theo cách thủ công, bạn sẽ cần chạy 'nmcli con reload' để nhận các thay đổi. Ngoài ra, chúng ta có thể thực hiện các thay đổi bằng lệnh nmcli, lệnh này phải mất một số thời gian để làm quen, nhưng khá mạnh mẽ và tính năng tự động hoàn thành tab của nó giúp ích rất nhiều.

Mã nguồn [Chọn]
nmcli con mod eno16777736 ipv6.addresses 'fe80::20c:29ff:fe27:f2b6/64'
nmcli con mod eno16777736 ipv6.method manual

Lệnh đầu tiên đặt địa chỉ IPv6, trong khi lệnh thứ hai đảm bảo rằng đây là địa chỉ tĩnh và không bị mất khỏi DHCP hoặc SLAAC.

Để biết thêm thông tin, hãy ghi nhớ trang hướng dẫn 'nmcli-examples', vì có một số ví dụ khác nhau được ghi lại ở đây mà bạn có thể sử dụng.

Mã nguồn [Chọn]
man nmcli-examples
3. Cấu hình IPv6 tự động

Cấu hình tự động của địa chỉ IPv6 có thể diễn ra với DHCPv6 hoặc SLAAC. Dưới đây là một số cấu hình mặc định từ CentOS 7 đã bật IPV6_AUTOCONF, điều này sẽ định cấu hình cài đặt mạng bằng quảng cáo bộ định tuyến SLAAC.

Mã nguồn [Chọn]
[root@centos7 network-scripts]# cat ifcfg-eno16777736
HWADDR=00:0C:29:AB:12:34
TYPE=Ethernet
BOOTPROTO=dhcp
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=0dbee9e5-2e7e-4c88-822b-869cfc9e2d54
ONBOOT=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

Ngoài ra, chúng ta có thể đặt IPV6_AUTOCONF thành không và xác định DHCPV6C=yes để sử dụng DHCPv6 thay vì SLAAC. Khi sử dụng SLAAC hoặc DHCPv6, có thể xóa các mục cấu hình thủ công như IPV6ADDR và IPV6_DEFAULTGW vì chúng sẽ được cấu hình tự động.

Để biết thêm thông tin về các biến này, bạn có thể xem tài liệu trong /usr/share/doc/initscripts-*/sysconfig.txt

4. Áp dụng thay đổi mạng

Sau khi thực hiện bất kỳ thay đổi nào đối với các tệp trong /etc/sysconfig/network-scripts/, mạng cần được khởi động lại để chúng có hiệu lực.

Mã nguồn [Chọn]
systemctl restart network
Bạn cũng có thể thực hiện khởi động lại hệ thống, tuy nhiên việc này sẽ mất nhiều thời gian hơn nhưng sẽ đưa giao diện lên với cấu hình mới.

5. Khắc phục sự cố IPv6 cơ bản

Dưới đây là một số công cụ cơ bản mà bạn có thể sử dụng để thực hiện khắc phục sự cố cơ bản của IPv6, chúng hoạt động khá giống với các đối tác IPv4 của chúng.

5.1. Ping IPv6

Lệnh ping6 hoạt động giống như lệnh ping thông thường, ngoại trừ việc ping6 hoạt động với địa chỉ IPv6. Điều này có thể được sử dụng để gửi lưu lượng ICMP đến địa chỉ IPv6 và kiểm tra phản hồi, ví dụ bên dưới sẽ ping địa chỉ máy chủ cục bộ IPv6.

Mã nguồn [Chọn]
[root@centos7 ~]# ping6 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.039 ms
...

Chúng tôi cũng có thể ping ra khỏi một giao diện được chỉ định, lệnh bên dưới sẽ ping mọi thứ được kết nối với eno1677736.

Mã nguồn [Chọn]
[root@ ~]# ping6 ff02::1%eno16777736
PING ff02::1%eno16777736(ff02::1) 56 data bytes
64 bytes from fe80::204:edff:feef:a770: icmp_seq=1 ttl=64 time=2.32 ms
64 bytes from fe80::204:edff:feef:a770: icmp_seq=2 ttl=64 time=0.640 ms

5.2. Các tuyến IPv6

Lệnh 'ip -6 route show' có thể được sử dụng để hiển thị định tuyến IPv6.

Mã nguồn [Chọn]
[root@centos7 ~]# ip -6 route show
unreachable ::/96 dev lo  metric 1024  error -101
unreachable ::ffff:0.0.0.0/96 dev lo  metric 1024  error -101
unreachable 2002:a00::/24 dev lo  metric 1024  error -101
unreachable 2002:7f00::/24 dev lo  metric 1024  error -101
unreachable 2002:a9fe::/32 dev lo  metric 1024  error -101
unreachable 2002:ac10::/28 dev lo  metric 1024  error -101
unreachable 2002:c0a8::/32 dev lo  metric 1024  error -101
unreachable 2002:e000::/19 dev lo  metric 1024  error -101
unreachable 3ffe:ffff::/32 dev lo  metric 1024  error -101
fe80::/64 dev eth0  proto kernel  metric 256

5.3. Theo dõi IPv6

Lệnh traceroute6 có thể được sử dụng để hiển thị tất cả các bước nhảy trong đường dẫn đến đích đã chỉ định giống như lệnh theo dõi.

Mã nguồn [Chọn]
[root@centos7 ~]# traceroute6 ipv6.google.com
traceroute to ipv6.google.com (2607:f8b0:4006:80f::200e), 30 hops max, 80 byte packets
connect: Network is unreachable

Lệnh tracepath6 hoạt động theo cách tương tự.

5.4. Xem thông tin địa chỉ IPv6 hiện tại

Bạn có thể hiển thị cấu hình IPv6 hiện tại bằng cách chạy lệnh 'ip a' viết tắt của 'ip address show'. Thao tác này sẽ hiển thị các giao diện IPv6 là 'inet6' theo sau là địa chỉ IP của chúng.

5.5. Xem kết nối mạng IPv6

Theo mặc định, lệnh 'netstat' hiển thị cả IPv4 và IPv6, tuy nhiên với tùy chọn -6, chúng tôi có thể chọn chỉ hiển thị các cổng mà máy chủ đang lắng nghe bằng địa chỉ IPv6 cũng như bất kỳ kết nối nào.

Mã nguồn [Chọn]
[root@centos7 ~]# netstat -antup6
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::111                  :::*                    LISTEN      787/rpcbind
tcp6       0      0 :::22                   :::*                    LISTEN      1661/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      2476/cupsd
tcp6       0      0 ::1:25                  :::*                    LISTEN      2066/master
udp6       0      0 :::111                  :::*                                787/rpcbind
udp6       0      0 :::123                  :::*                                781/chronyd
udp6       0      0 ::1:323                 :::*                                781/chronyd
udp6       0      0 :::39836                :::*                                1439/dhclient
udp6       0      0 :::942                  :::*                                787/rpcbind

Cấu hình địa chỉ IPv6 không khác nhiều so với cấu hình địa chỉ IPv4, sự khác biệt chính chỉ đơn giản là cấu trúc của địa chỉ IP là khác nhau. Sau khi nắm được kiến thức cơ bản về IPv6, bạn có thể dễ dàng định cấu hình mạng IPv6. Hầu hết các công cụ khắc phục sự cố cũng khá giống nhau, bạn vẫn có thể xem thông tin địa chỉ IP hiện tại, bảng định tuyến và thực hiện lệnh ping và theo dõi theo cách rất giống nhau.