4.4 Bài 1
Chứng chỉ: |
Linux Essentials |
---|---|
Phiên bản: |
1.6 |
Chủ đề: |
4 Hệ điều hành Linux |
Mục tiêu: |
4.4 Máy tinh trên Mạng |
Bài: |
1 trên 1 |
Giới thiệu
Trong thế giới ngày nay, bất kỳ loại thiết bị máy tính nào cũng sẽ thực hiện việc trao đổi thông tin qua mạng. Trọng tâm của khái niệm mạng máy tính là các kết nối vật lý giữa một hoặc nhiều thiết bị đồng cấp với nó. Các kết nối này được gọi là liên kết; chúng là kết nối cơ bản nhất giữa hai thiết bị khác nhau. Các liên kết có thể được thiết lập thông qua các phương tiện khác nhau, chẳng hạn như cáp đồng, sợi quang, sóng vô tuyến hoặc tia laze.
Mỗi liên kết sẽ được kết nối với một giao diện của thiết bị. Mỗi thiết bị có thể có nhiều giao diện và do đó được kết nối với nhiều liên kết. Thông qua các liên kết này, các máy tính có thể tạo thành một mạng - một cộng đồng nhỏ nơi các thiết bị có thể kết nối trực tiếp với nhau. Có rất nhiều ví dụ về các mạng như vậy trên thế giới. Để có thể giao tiếp ngoài phạm vi của mạng tầng liên kết, các thiết bị phải sử dụng bộ định tuyến. Hãy coi các mạng tầng liên kết như các hòn đảo được kết nối bởi các bộ định tuyến kết nối — giống như những cây cầu mà thông tin sẽ di chuyển qua để có thể đến được một hòn đảo hẻo lánh khác - tức một thiết bị khác.
Mô hình này dẫn đến một số tầng mạng khác nhau:
- Tầng liên kết
-
Xử lý giao tiếp giữa các thiết bị được kết nối trực tiếp.
- Tầng mạng
-
Xử lý định tuyến bên ngoài các mạng riêng lẻ và địa chỉ duy nhất của các thiết bị bên ngoài mạng tầng liên kết đơn.
- Lớp ứng dụng
-
Cho phép các chương trình riêng lẻ kết nối với nhau.
Khi mới được phát minh, các mạng máy tính đã sử dụng các phương thức liên lạc chuyển mạch giống như điện thoại. Việc này có nghĩa là một liên kết chuyên dụng và trực tiếp phải được hình thành giữa hai nút để chúng có thể giao tiếp. Phương pháp này đã hoạt động khá tốt; tuy nhiên, nó lại yêu cầu tất cả không gian trên một liên kết chỉ để hai máy chủ giao tiếp.
Sau cùng, các mạng máy tính đã chuyển sang một phương thức khác gọi là chuyển mạch gói. Ở phương thức này, dữ liệu được nhóm lại với một tiêu đề chứa thông tin về nơi nó xuất phát và đích đến của nó. Thông tin nội dung thực tế sẽ được chứa trong khung này và sẽ được gửi qua liên kết đến người nhận được chỉ định trong tiêu đề của khung. Điều này cho phép nhiều thiết bị chia sẻ một liên kết và giao tiếp gần như cùng một lúc.
Mạng Tầng Liên kết
Công việc của bất kỳ một gói thông tin nào cũng là đưa thông tin từ nguồn đến đích thông qua một liên kết kết nối cả hai thiết bị với nhau. Các thiết bị này cần một phương thức để nhận dạng nhau. Đây chính là mục đích của địa chỉ tầng liên kết. Trong mạng Ethernet, Địa chỉ kiểm soát truy cập phương tiện (MAC) được sử dụng để xác định các thiết bị riêng lẻ. Một địa chỉ MAC sẽ bao gồm 48 bit. Chúng không phải là duy nhất trong phạm vi toàn cầu và không thể được sử dụng để xác định các địa chỉ ngang hàng ngoài liên kết hiện tại. Do đó, các địa chỉ này không thể được sử dụng để định tuyến các gói tin đến các liên kết khác. Bên nhận gói sẽ kiểm tra xem địa chỉ đích có khớp với tầng liên kết của chính nó hay không và nếu khớp, bên nhận sẽ xử lý gói. Nếu không thì gói tin sẽ bị loại bỏ. Ngoại lệ đối với quy tắc này là gói tin quảng bá (một gói tin được gửi tới mọi máy trong một mạng cục bộ nhất định); gói tin này sẽ luôn được chấp nhận.
Lệnh ip link show
sẽ hiển thị danh sách tất cả các giao diện mạng khả dụng và địa chỉ tầng liên kết của chúng cũng như một số thông tin khác về kích thước gói tối đa:
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
Đầu ra ở trên cho thấy thiết bị có hai giao diện, lo
và ens33
. lo
là thiết bị vòng lặp và có địa chỉ MAC là 00:00:00:00:00:00
, trong khi ens33
là giao diện ethernet và có địa chỉ MAC là `00:0c:29:33:3b:25 `.
Mạng IPv4
Để truy cập các trang web như Google hoặc Twitter, để kiểm tra email hoặc cho phép các doanh nghiệp kết nối với nhau, các gói cần có khả năng chuyển vùng từ mạng tầng liên kết này sang mạng tầng liên kết khác. Thông thường, các mạng này chỉ được kết nối gián tiếp với một số mạng tầng liên kết trung gian mà các gói phải đi qua để đến được đích đến thực tế của chúng.
Địa chỉ tầng liên kết của giao diện mạng không thể được sử dụng bên ngoài mạng tầng liên kết đó. Vì địa chỉ này vô nghĩa đối với các thiết bị trong các mạng tầng liên kết khác nên phải có một dạng địa chỉ duy nhất trên toàn cầu để thực hiện định tuyến. Cơ chế địa chỉ này cùng với khái niệm tổng thể về định tuyến được triển khai bởi Giao thức Internet (IP - Internet Protocol).
Note
|
Một giao thức là một tập hợp các quy trình thực hiện một tác vụ sao cho tất cả các bên tuân theo giao thức đều sẽ tương thích với nhau. Một giao thức có thể được coi là định nghĩa của một tiêu chuẩn. Trong điện toán, Giao thức Internet là một tiêu chuẩn được thống nhất để các thiết bị khác nhau được sản xuất bởi các nhà sản xuất khác nhau đều có thể giao tiếp với nhau. |
Địa chỉ IPv4
Giống như địa chỉ MAC, địa chỉ IP là một cách để chỉ ra nơi xuất phát và đích đến của một gói dữ liệu. IPv4 là giao thức nguyên sơ. Địa chỉ IPv4 có độ rộng 32 bit và cho số lượng địa chỉ tối đa theo lý thuyết là 4.294.967.296. Tuy nhiên, số lượng địa chỉ mà các thiết bị có thể sử dụng nhỏ hơn nhiều vì một số dải được dành riêng cho các trường hợp sử dụng đặc biệt như địa chỉ quảng bá (được sử dụng để tiếp cận tất cả các máy tham gia một mạng cụ thể), địa chỉ phát đa hướng (tương tự như địa chỉ quảng bá, nhưng mỗi thiết bị sẽ phải bắt sóng như radio) hoặc những thiết bị dành riêng cho mục đích sử dụng cá nhân.
Ở định dạng con người có thể đọc được, các địa chỉ IPv4 có ký hiệu là bốn chữ số được phân tách bằng dấu chấm. Mỗi chữ số có thể nằm trong khoảng từ 0
đến 255
. Ví dụ như địa chỉ IP sau:
192.168.0.1
Về mặt kỹ thuật, mỗi chữ số này đại diện cho tám bit riêng lẻ. Do đó, địa chỉ này cũng có thể được viết như sau:
11000000.10101000.00000000.00000001
Trong thực tế, ký hiệu thập phân đã được sử dụng. Tuy nhiên, việc biểu diễn bằng bit vẫn là rất quan trọng để có thể hiểu mạng con.
Mạng con IPv4
Để hỗ trợ việc định tuyến, địa chỉ IP có thể được chia thành hai phần: phần mạng và phần máy chủ. Phần mạng sẽ xác định mạng nơi thiết bị đang kết nối và được sử dụng để định tuyến các gói đến mạng đó. Phần máy chủ được sử dụng để xác định cụ thể một thiết bị nhất định trên mạng và chuyển gói tin đến bên nhận cụ thể sau khi nó đã đến được mạng tầng liên kết của nó.
Địa chỉ IP có thể được chia thành các phần mạng con và máy chủ tại bất kỳ thời điểm nào. Cái gọi là mặt nạ mạng con sẽ xác định nơi xảy ra sự phân chia này. Hãy xem xét lại biểu diễn nhị phân của địa chỉ IP từ ví dụ trước:
11000000.10101000.00000000.00000001
Bây giờ, đối với địa chỉ IP này, mặt nạ mạng con sẽ đặt từng bit thuộc phần mạng thành 1
và mỗi bit thuộc phần máy chủ thành 0
:
11111111.11111111.11111111.00000000
Trong thực tế, mặt nạ mạng sẽ được viết bằng ký hiệu thập phân:
255.255.255.0
Điều này có nghĩa là mạng này nằm trong khoảng từ 192.168.0.0
đến 192.168.0.255
. Hãy lưu ý rằng ba số đầu tiên có tất cả các bit được đặt trong mặt nạ mạng vẫn không thay đổi trong các địa chỉ IP.
Cuối cùng, có một ký hiệu thay thế cho mặt nạ mạng con được gọi là Định tuyến Liên miền không phân loại (CIDR - Classless Inter-Domain Routing). Ký hiệu này sẽ chỉ cho biết có bao nhiêu bit được đặt trong mặt nạ mạng con và thêm số này vào địa chỉ IP. Trong ví dụ này, 24 trong số 32 bit được đặt thành 1
trong mặt nạ mạng con. Điều này có thể được thể hiện bằng ký hiệu CIDR là 192.168.0.1/24
Địa chỉ IPv4 riêng tư
Như đã đề cập trước đó, một số phần của không gian địa chỉ IPv4 sẽ được dành riêng cho các trường hợp sử dụng đặc biệt. Một trong những trường hợp sử dụng này là gán địa chỉ riêng tư. Các mạng con sau được dành riêng cho địa chỉ riêng tư:
-
10.0.0.0/8
-
172.16.0.0/12
-
192.168.0.0/16
Bất kỳ ai cũng có thể sử dụng địa chỉ của các mạng con này. Tuy nhiên, các mạng con này không thể được định tuyến trên internet công cộng vì chúng có khả năng được sử dụng bởi nhiều mạng cùng một lúc.
Ngày nay, hầu hết các mạng đều sử dụng các địa chỉ nội bộ này. Chúng cho phép giao tiếp nội bộ mà không cần gán địa chỉ bên ngoài. Hầu hết các kết nối internet ngày nay chỉ đi kèm với một địa chỉ IPv4 bên ngoài duy nhất. Bộ định tuyến sẽ ánh tất cả các địa chỉ bên trong tới địa chỉ IP bên ngoài duy nhất đó khi chuyển tiếp các gói tới mạng internet. Điều này được gọi là Dịch địa chỉ mạng (NAT - Network Address Translation). Trường hợp đặc biệt của NAT mà trong đó bộ định tuyến ánh xạ các địa chỉ bên trong tới một địa chỉ IP bên ngoài duy nhất đôi khi được gọi là giả trang. Điều này cho phép mọi thiết bị trong mạng thiết lập các kết nối mới với bất kỳ địa chỉ IP toàn cầu nào trên mạng internet.
Note
|
Trong trường hợp giả trang, các thiết bị nội bộ sẽ không thể được tham chiếu từ internet vì chúng không có địa chỉ hợp lệ trên toàn cầu. Tuy nhiên, đây không phải là một tính năng bảo mật. Ngay cả khi giả trang thì ta vẫn phải có tường lửa. |
Cấu hình địa chỉ IPv4
Có hai cách chính để định cấu hình địa chỉ IPv4 trên máy tính. Một là chỉ định địa chỉ theo cách thủ công, hai là bằng cách sử dụng Giao thức Cấu hình Máy chủ động (DHCP - Dynamic Host Configuration Protocol) để cấu hình tự động.
Khi sử dụng DHCP, một máy chủ trung tâm sẽ kiểm soát việc phân bổ địa chỉ cho các thiết bị. Máy chủ cũng có thể cung cấp cho các thiết bị các thông tin khác về mạng, chẳng hạn như địa chỉ IP của máy chủ DNS, địa chỉ IP của bộ định tuyến mặc định hoặc để khởi động hệ điều hành từ mạng trong trường hợp thiết lập phức tạp. DHCP sẽ được bật theo mặc định trên nhiều hệ thống; do đó, bạn có thể đã có sẵn địa chỉ IP khi kết nối với mạng.
Địa chỉ IP cũng có thể được thêm thủ công vào giao diện bằng cách sử dụng lệnh ip addr add
. Ở đây, chúng ta sẽ thêm địa chỉ 192.168.0.5
vào giao diện ens33
. Mạng sử dụng mặt nạ mạng 255.255.255.0
, tương đương với /24
trong ký hiệu CIDR:
$ sudo ip addr add 192.168.0.5/255.255.255.0 dev ens33
Bây giờ chúng ta có thể xác minh rằng địa chỉ đã được thêm bằng cách sử dụng lệnh ip addr show
:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever
Đầu ra ở trên đã cho thấy cả giao diện lo
và giao diện ens33
cùng với địa chỉ của nó được gán bằng lệnh ở trên.
Để xác minh khả năng tiếp cận của thiết bị, ta có thể sử dụng lệnh ping
. Lệnh sẽ gửi một loại tin nhắn đặc biệt được gọi là yêu cầu phản hồi mà trong đó, người gửi yêu cầu người nhận phải phản hồi. Nếu kết nối giữa hai thiết bị có thể được thiết lập thành công, người nhận sẽ gửi lại phản hồi xác nhận kết nối đã được thiết lập:
$ ping -c 3 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.16 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.85 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.41 ms --- 192.168.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 5ms rtt min/avg/max/mdev = 1.849/2.473/3.410/0.674 ms
Tham số -c 3
sẽ khiến ping
dừng lại sau khi gửi ba yêu cầu phản hồi. Nếu không, ping
sẽ tiếp tục chạy mãi và phải dừng lại bằng cách nhấn Ctrl+C.
Định tuyến IPv4
Định tuyến là một quá trình mà trong đó một gói sẽ đi từ mạng nguồn đến mạng đích. Mỗi thiết bị sẽ duy trì một bảng định tuyến chứa thông tin về việc mạng IP nào có thể được truy cập trực tiếp thông qua phần đính kèm của thiết bị với các mạng tầng liên kết, và mạng IP nào có thể được truy cập bằng cách chuyển các gói tới bộ định tuyến. Cuối cùng, định tuyến mặc định sẽ xác định một bộ định tuyến có thể nhận tất cả các gói không khớp với bất kỳ định tuyến nào khác.
Khi thiết lập kết nối, thiết bị sẽ tra cứu địa chỉ IP của mục tiêu trong bảng định tuyến của nó. Nếu tìm thấy một mục phù hợp với địa chỉ, gói sẽ được gửi đến mạng tầng liên kết tương ứng hoặc được chuyển đến bộ định tuyến được chỉ định trong bảng định tuyến.
Bản thân các bộ định tuyến cũng duy trì các bảng định tuyến của riêng mình. Khi nhận được một gói, một bộ định tuyến cũng tra cứu địa chỉ đích trong bảng định tuyến của chính nó và gửi gói đến bộ định tuyến tiếp theo. Điều này sẽ được lặp lại cho đến khi gói đến được bộ định tuyến trên mạng đích. Mỗi bộ định tuyến tham gia vào hành trình này được gọi là hop. Bộ định tuyến cuối cùng này sẽ tìm thấy một liên kết được kết nối trực tiếp cho địa chỉ đích trong bảng định tuyến của nó và gửi các gói đến giao diện đích.
Hầu hết các mạng gia đình chỉ có một lối thoát, đó là bộ định tuyến duy nhất đến từ nhà cung cấp dịch vụ internet (ISP - Internet Service Provider). Trong trường hợp này, một thiết bị chỉ chuyển tiếp trực tiếp tất cả các gói không dành cho mạng nội bộ tới bộ định tuyến gia đình, sau đó bộ định tuyến này sẽ gửi các gói tới bộ định tuyến của nhà cung cấp để chuyển tiếp thêm. Đây là một ví dụ về định tuyến mặc định.
Lệnh ip route show
sẽ liệt kê bảng định tuyến IPv4 hiện tại:
$ ip route show 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Để thêm một định tuyến mặc định, tất cả những gì ta cần là địa chỉ nội bộ của bộ định tuyến sẽ là cổng mặc định. Ví dụ: nếu bộ định tuyến có địa chỉ là 192.168.0.1
thì lệnh sau sẽ thiết lập nó làm định tuyến mặc định:
$ sudo ip route add default via 192.168.0.1
Để xác minh, hãy chạy lại ip route show
:
$ ip route show default via 192.168.0.1 dev ens33 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Mạng IPv6
IPv6 được thiết kế để giải quyết những hạn chế của IPv4, chủ yếu là về việc thiếu hụt địa chỉ khi ngày càng có nhiều thiết bị được đưa lên mạng. Tuy nhiên, IPv6 cũng bao gồm các tính năng khác, ví dụ như các giao thức mới để cấu hình mạng tự động. Thay vì 32 bit cho mỗi địa chỉ, IPv6 sử dụng 128 bit. Điều này cho phép nó cung cấp khoảng 2128 địa chỉ. Tuy nhiên, giống như IPv4, số lượng địa chỉ có thể sử dụng duy nhất trên toàn cầu nhỏ hơn rất nhiều so với con số trên do các phần phân bổ được dành riêng cho các mục đích sử dụng khác. Số lượng địa chỉ khổng lồ này ám chỉ việc nó có thừa địa chỉ công cộng cho mọi thiết bị hiện đang được kết nối với internet và thậm chí là nhiều hơn thế nữa, do đó giảm đi nhu cầu giả trang và các vấn đề liên quan như chậm trễ trong quá trình dịch và khả năng không thể kết nối trực tiếp được với các thiết bị giả trang.
Địa chỉ IPv6
Khi được viết ra, các địa chỉ sẽ sử dụng 8 nhóm gồm 4 chữ số thập lục phân, mỗi nhóm được phân tách bằng một dấu hai chấm:
2001:0db8:0000:abcd:0000:0000:0000:7334
Note
|
Các chữ số thập lục phân nằm trong khoảng từ |
Để dễ hiểu hơn, các số 0 đứng đầu trong mỗi nhóm có thể được bỏ đi khi viết ra; tuy nhiên, mỗi nhóm vẫn phải chứa ít nhất một chữ số:
2001:db8:0:abcd:0:0:0:7334
Trong trường hợp nhiều nhóm chỉ chứa các chữ số 0 nối đuôi nhau, chúng có thể được thay thế hoàn toàn bằng '::':
2001:db8:0:abcd::7334
Tuy nhiên, thay thế này chỉ có thể xảy ra một lần trong mỗi một địa chỉ.
Tiền tố IPv6
64 bit đầu tiên của địa chỉ IPv6 được gọi là tiền tố định tuyến. Tiền tố sẽ được các bộ định tuyến sử dụng để xác định thiết bị thuộc về mạng nào và từ đó xác định dữ liệu cần được gửi qua đường dẫn nào. Việc chia mạng con luôn xảy ra bên trong tiền tố. Các ISP thường cung cấp cho khách hàng cuả họ các tiền tố /48 hoặc /58, để lại cho họ 16 hoặc 8 bit dành cho mạng con nội bộ.
Có ba loại tiền tố chính trong IPv6:
- Địa chỉ toàn cầu duy nhất
-
Trong đó tiền tố được gán từ các khối dành riêng cho địa chỉ trên toàn cầu. Những địa chỉ này sẽ hợp lệ trên toàn bộ không gian internet.
- Địa chỉ cục bộ duy nhất
-
Có thể không được định tuyến trong internet. Tuy nhiên, chúng có thể được định tuyến nội bộ trong một tổ chức. Các địa chỉ này được sử dụng trong một mạng để đảm bảo các thiết bị vẫn có địa chỉ ngay cả khi không có kết nối internet. Chúng tương đương với các dải địa chỉ riêng tư từ IPv4. 8 bit đầu tiên luôn là
fc
hoặcfd
, tiếp theo là 40 bit được tạo ngẫu nhiên. - Địa chỉ Liên kết Địa phương
-
Chỉ hợp lệ trên một liên kết cụ thể. Mỗi giao diện mạng hỗ trợ IPv6 đều có một địa chỉ như vậy, bắt đầu bằng
fe80
. Các địa chỉ này được IPv6 sử dụng nội bộ để yêu cầu các địa chỉ bổ sung bằng cách sử dụng cấu hình tự động và để tìm các máy tính khác trong cùng mạng bằng giao thức Tìm Hàng xóm (Neighbor Discovery).
Định danh Giao diện IPv6
Trong khi tiền tố xác định thiết bị nằm trong mạng nào, mã định danh giao diện được sử dụng để liệt kê các thiết bị trong một mạng. 64 bit cuối cùng trong địa chỉ IPv6 sẽ tạo thành mã định danh giao diện, giống hệt như các bit cuối cùng của địa chỉ IPv4.
Khi địa chỉ IPv6 được gán thủ công, mã định danh giao diện sẽ được đặt thành một phần của địa chỉ. Khi sử dụng cấu hình địa chỉ tự động, mã định danh giao diện có thể được chọn ngẫu nhiên hoặc được lấy từ địa chỉ tầng liên kết của thiết bị. Điều này khiến một biến thể của địa chỉ tầng liên kết xuất hiện trong địa chỉ IPv6.
Cấu hình địa chỉ IPv6
Giống như IPv4, địa chỉ IPv6 có thể được gán thủ công hoặc tự động. Tuy nhiên, IPv6 có hai loại cấu hình tự động khác nhau, DHCPv6 và Cấu hình Tự động Địa chỉ phi Trạng thái (SLAAC - Stateless Address Autoconfiguration).
SLAAC là phương pháp dễ dàng hơn trong hai phương pháp tự động và được tích hợp ngay vào tiêu chuẩn IPv6. Các tin nhắn sử dụng Giao thức Tìm Hàng xóm mới cho phép các thiết bị tìm thấy nhau và yêu cầu các thông tin liên quan đến mạng. Các thông tin này sẽ được gửi bởi các bộ định tuyến và chúng có thể sẽ chứa các tiền tố IPv6 mà các thiết bị có thể sử dụng bằng cách kết hợp chúng với một mã định danh giao diện mà chúng chọn, miễn là địa chỉ kết quả chưa được sử dụng. Các thiết bị sẽ không cung cấp phản hồi cho bộ định tuyến về các địa chỉ thực đã tạo ra.
Mặt khác, DHCPv6 là phiên bản đã được cập nhật của DHCP để phù hợp hơn với những thay đổi của IPv6. Nó khiến việc kiểm soát thông tin được cung cấp cho khách hàng trở nên hiệu quả hơn, chẳng hạn như cho phép cùng một địa chỉ được trao cho cùng một khách hàng mỗi lần và gửi nhiều tùy chọn hơn cho khách hàng so với SLAAC. Với DHCPv6, khách hàng cần có sự đồng ý của máy chủ DHCP để có thể sử dụng địa chỉ.
Phương pháp gán thủ công địa chỉ IPv6 cho giao diện cũng sẽ giống như với IPv4:
$ sudo ip addr add 2001:db8:0:abcd:0:0:0:7334/64 dev ens33
Để xác minh việc gán đã thành công, lệnh ip addr show
tương tự sẽ được sử dụng:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever inet6 2001:db8:0:abcd::7334/64 scope global valid_lft forever preferred_lft forever
Ở đây, chúng ta cũng có thể thấy địa chỉ liên kết cục bộ là fe80::010c:29ff:fe33:3b25/64
.
Giống như IPv4, lệnh ping
cũng có thể được sử dụng để xác nhận khả năng kết nối của các thiết bị thông qua IPv6:
$ ping 2001:db8:0:abcd::1 PING 2001:db8:0:abcd::1(2001:db8:0:abcd::1) 56 data bytes 64 bytes from 2001:db8:0:abcd::1: icmp_seq=1 ttl=64 time=0.030 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=3 ttl=64 time=0.072 ms --- 2001:db8:0:abcd::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 43ms rtt min/avg/max/mdev = 0.030/0.047/0.072/0.018 ms
Note
|
Trên một số hệ thống Linux, |
Để xác minh lại địa chỉ liên kết cục bộ, hãy sử dụng lại ping
. Nhưng vì tất cả các giao diện đều sử dụng tiền tố fe80::/64
, giao diện chính xác phải được chỉ định cùng với địa chỉ:
$ ping6 -c 1 fe80::010c:29ff:fe33:3b25%ens33 PING fe80::010c:29ff:fe33:3b25(fe80::010c:29ff:fe33:3b25) 56 data bytes 64 bytes from fe80::010c:29ff:fe33:3b25%ens33: icmp_seq=1 ttl=64 time=0.049 ms --- fe80::010c:29ff:fe33:3b25 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
DNS
Địa chỉ IP rất khó nhớ và nghe không được hấp dẫn lắm nếu bạn đang muốn tiếp thị một dịch vụ hoặc một sản phẩm. Đây là lúc Hệ Thống Tên Miền (DNS - Domain Name System) phát huy tác dụng. Ở dạng đơn giản nhất, DNS là một danh bạ điện thoại được phân phối đánh dấu các tên miền thân thiện dễ nhớ (chẳng hạn như example.com
) tới các địa chỉ IP. Ví dụ: khi người dùng điều hướng đến một trang web, họ sẽ nhập tên máy chủ DNS như một phần của URL. Sau đó, trình duyệt web sẽ gửi tên DNS tới bất kỳ trình phân giải DNS nào đã được định cấu hình. Trình phân giải DNS đó sẽ lần lượt tìm ra địa chỉ tương quan với tên miền. Sau đó, trình phân giải sẽ trả lời bằng địa chỉ đó và trình duyệt web sẽ cố gắng truy cập máy chủ web tại địa chỉ IP đó.
Trình phân giải mà Linux sử dụng để tra cứu dữ liệu DNS được định cấu hình trong tệp cấu hình /etc/resolv.conf
:
$ cat /etc/resolv.conf search lpi nameserver 192.168.0.1
Khi trình phân giải thực hiện tra cứu tên, trước tiên, nó sẽ kiểm tra tệp /etc/hosts
để xem liệu nó có chứa địa chỉ cho tên được yêu cầu hay không. Nếu có, nó sẽ trả về địa chỉ đó và không liên hệ với DNS. Điều này cho phép các quản trị viên mạng cung cấp độ phân giải tên mà không cần phải mất công cấu hình một máy chủ DNS hoàn chỉnh. Mỗi dòng trong tệp đó sẽ chứa một địa chỉ IP, theo sau là một hoặc nhiều tên:
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 192.168.0.10 server 2001:db8:0:abcd::f server
Để thực hiện tra cứu trong DNS, hãy sử dụng lệnh host
:
$ host learning.lpi.org learning.lpi.org has address 208.94.166.198
Thông tin chi tiết hơn có thể được truy xuất bằng lệnh dig
:
$ dig learning.lpi.org ; <<>> DiG 9.14.3 <<>> learning.lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21525 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 2ac55879b1adef30a93013705d3306d2128571347df8eadf (bad) ;; QUESTION SECTION: ;learning.lpi.org. IN A ;; ANSWER SECTION: learning.lpi.org. 550 IN A 208.94.166.198 ;; Query time: 3 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Sat Jul 20 14:20:21 EST 2019 ;; MSG SIZE rcvd: 89
Ở đây, chúng ta cũng đã thấy tên của các loại bản ghi DNS, trong trường hợp này là A
cho IPv4.
Ổ nối
Ổ nối là điểm giao tiếp cuối để hai chương trình tương tác với nhau. Nếu ổ nối được kết nối qua mạng, các chương trình có thể chạy trên các thiết bị khác nhau, chẳng hạn như trình duyệt web chạy trên máy tính xách tay của người dùng và máy chủ web chạy trong trung tâm dữ liệu của công ty.
Có ba loại ổ nối chính:
- Ổ nối Unix
-
Kết nối các quy trình đang chạy trên cùng một thiết bị.
- Ổ nối UDP (User Datagram Protocol - Giao thức Dữ liệu Người dùng)
-
Kết nối các ứng dụng bằng giao thức, nhanh nhưng không linh hoạt.
- Ổ nối TCP (Transmission Control Protocol - Giao thức Điều khiển Truyền nhận)
-
Đáng tin cậy hơn ổ cắm UDP, chẳng hạn như trong việc xác nhận việc nhận dữ liệu.
Ổ nối Unix chỉ có thể kết nối các ứng dụng chạy trên cùng một thiết bị. Tuy nhiên, ổ nối TCP và UDP có thể kết nối qua mạng. TCP cho phép luồng dữ liệu luôn đến theo thứ tự chính xác như khi nó được gửi. UDP thì chỉ biết gửi; gói sẽ được gửi đi nhưng việc có đến được đúng địa chỉ hay không lại không thể đảm bảo. Tuy nhiên, UDP không có công suất bổ sung như TCP; điều này khiến nó trở thành một sự lựa chọn hoàn hảo cho các ứng dụng có độ trễ thấp như trò chơi điện tử trực tuyến.
Cả TCP và UDP đều sử dụng các cổng để giải quyết nhiều ổ nối trên cùng một địa chỉ IP. Mặc dù cổng nguồn cho mỗi một kết nối thường là ngẫu nhiên, nhưng các cổng đích phải được chuẩn hóa cho mỗi dịch vụ cụ thể. Ví dụ: HTTP thường được lưu trữ ở cổng 80, HTTPS chạy trên cổng 443. SSH, một giao thức để đăng nhập an toàn vào hệ thống Linux từ xa, "lắng nghe" ở cổng 22.
Lệnh ss
cho phép quản trị viên điều tra tất cả các ổ nối trên máy tính Linux. Nó sẽ cho ta thấy mọi thứ từ địa chỉ nguồn, địa chỉ đích và loại. Một trong những tính năng tốt nhất của nó là sử dụng các bộ lọc để người dùng có thể giám sát các ổ nối ở bất kỳ trạng thái kết nối nào họ muốn. ss
có thể được chạy với một tập hợp các tùy chọn cũng như biểu thức bộ lọc để giới hạn thông tin được hiển thị.
Khi được thực thi mà không có bất kỳ tùy chọn nào, lệnh sẽ hiển thị danh sách của tất cả các ổ nối đã thiết lập. Việc sử dụng tùy chọn -p
sẽ cho ra thông tin về quá trình (process) sử dụng từng ổ nối. Tùy chọn -s
hiển thị tóm tắt (summary) các ổ nối. Có nhiều tùy chọn khác có sẵn cho công cụ này, nhưng tập hợp các tùy chọn chính cuối cùng là -4
và -6
để thu hẹp giao thức IP thành IPv4 hoặc IPv6 tương ứng, -t
và -u
cho phép quản trị viên chọn ổ nối TCP hoặc UDP và -l
để chỉ hiển thị ổ cắm "lắng nghe" (listen) các kết nối mới.
Ví dụ, lệnh sau sẽ liệt kê tất cả các ổ nối TCP hiện đang được sử dụng:
$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.0.5:49412 192.168.0.1:https ESTAB 0 0 192.168.0.5:37616 192.168.0.1:https ESTAB 0 0 192.168.0.5:40114 192.168.0.1:https ESTAB 0 0 192.168.0.5:54948 192.168.0.1:imap ...
Bài tập Hướng dẫn
-
Một kỹ sư mạng được yêu cầu gán hai địa chỉ IP cho giao diện
ens33
của máy chủ, một địa chỉ IPv4 (192.168.10.10/24
) và một địa chỉ IPv6 (2001:0:0:abcd:0:8a2e: 0370:7334/64
). Họ sẽ phải nhập những lệnh nào để đạt được điều này? -
Địa chỉ nào trong các lựa chọn dưới đây là địa chỉ riêng tư?
192.168.10.1
120.56.78.35
172.16.57.47
10.100.49.162
200.120.42.6
-
Bạn sẽ thêm gì vào tệp máy chủ để gán
192.168.0.15
choexample.com
? -
Lệnh sau có tác dụng gì?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Bài tập Mở rộng
-
Hãy đặt tên cho loại bản ghi DNS được sử dụng để phục vụ các yêu cầu sau:
-
Dữ liệu văn bản
-
Tra cứu địa chỉ IP ngược
-
Miền không có địa chỉ riêng và phải dựa vào miền khác
-
Máy chủ Thư điện tử
-
-
Linux có một tính năng gọi là bắc cầu, nó làm gì và có tác dụng như thế nào?
-
Tùy chọn nào cần được cung cấp cho lệnh
ss
để xem tất cả các ổ nối UDP đã thiết lập? -
Lệnh nào hiển thị tóm tắt của tất cả các ổ nối đang chạy trên thiết bị Linux?
-
Đầu ra sau đây được tạo bởi lệnh từ bài tập trước. Có bao nhiêu ổ nối TCP và UDP đang hoạt động?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
Tóm tắt
Bài học này đã nói về kết nối mạng máy tính Linux của bạn. Đầu tiên, chúng ta đã tìm hiểu về các cấp độ khác nhau của mạng: * Tầng liên kết kết nối trực tiếp các thiết bị. * Tầng mạng cung cấp định tuyến giữa các mạng và không gian địa chỉ toàn cầu. * Tầng ứng dụng nơi các ứng dụng kết nối với nhau. Chúng ta đã thấy cách IPv4 và IPv6 được sử dụng để định địa chỉ cho các máy tính riêng lẻ và cách TCP và UDP liệt kê các ổ nối được các ứng dụng sử dụng để kết nối với nhau. Chúng ta cũng đã học cách sử dụng DNS để phân giải tên thành địa chỉ IP.
Các lệnh được dùng trong bài tập:
dig
-
Truy vấn thông tin DNS và cung cấp thông tin chi tiết về các truy vấn và phản hồi của DNS.
host
-
Truy vấn thông tin DNS và cung cấp đầu ra rút gọn.
ip
-
Định cấu hình mạng trên Linux, bao gồm giao diện mạng, địa chỉ và định tuyến.
ping
-
Kiểm tra kết nối với một thiết bị từ xa.
ss
-
Hiển thị thông tin liên quan đến ổ nối.
Đáp án Bài tập Hướng dẫn
-
Một kỹ sư mạng được yêu cầu gán hai địa chỉ IP cho giao diện
ens33
của máy chủ, một địa chỉ IPv4 (192.168.10.10/24
) và một địa chỉ IPv6 (2001:0:0:abcd:0:8a2e: 0370:7334/64
). Họ sẽ phải nhập những lệnh nào để đạt được điều này?sudo ip addr add 192.168.10.10/24 dev ens33 sudo ip addr add 2001:0:0:abcd:0:8a2e:0370:7334/64 dev ens33
-
Địa chỉ nào trong các lựa chọn dưới đây là địa chỉ riêng tư?
192.168.10.1
X
120.56.78.35
172.16.57.47
X
10.100.49.162
X
200.120.42.6
-
Bạn sẽ thêm gì vào tệp máy chủ để gán
192.168.0.15
choexample.com
?192.168.0.15 example.com
-
Lệnh sau có tác dụng gì?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Nó sẽ thêm một định tuyến mặc định vào bảng để gửi tất cả lưu lượng IPv6 tới bộ định tuyến với địa chỉ nội bộ là
2001:db8:0:abcd::1
.
Đáp án Bài tập Mở rộng
-
Hãy đặt tên cho loại bản ghi DNS được sử dụng để phục vụ các yêu cầu sau:
-
Dữ liệu văn bản
TXT
-
Tra cứu địa chỉ IP ngược
PTR
-
Miền không có địa chỉ riêng và phải dựa vào miền khác
CNAME
-
Máy chủ Thư điện tử
MX
-
-
Linux có một tính năng gọi là bắc cầu, nó làm gì và có tác dụng như thế nào?
Một cầu nối sẽ kết nối nhiều giao diện mạng. Tất cả các giao diện kết nối vào một cầu nối có thể giao tiếp như thể chúng đang kết nối vào cùng một mạng tầng liên kết: Tất cả các thiết bị sẽ sử dụng địa chỉ IP từ cùng một mạng con và không cần phải có bộ định tuyến để kết nối với nhau.
-
Tùy chọn nào cần được cung cấp cho lệnh
ss
để xem tất cả các ổ nối UDP đã thiết lập?Tùy chọn
-u
sẽ hiển thị tất cả các ổ nói UDP đã thiết lập. -
Lệnh nào hiển thị tóm tắt của tất cả các ổ nối đang chạy trên thiết bị Linux?
Lệnh
ss -s
hiển thị tóm tắt tất cả các ổ nối. -
Đầu ra sau đây được tạo bởi lệnh từ bài tập trước. Có bao nhiêu ổ nối TCP và UDP đang hoạt động?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
11 ổ nối TCP và UDP đang hoạt động.