Cloud kietna

Bài 1: Linux

Bài 1: Linux

Bài 1: Linux

Kiến thức nền tảng để học Cloud

Part 1 of 5

Table of Contents

1. Tìm hiểu về lịch sử phát triển, các nhánh phát triển chính của HĐH Linux

1.1. Lịch sử phát triển

  • Linux là một họ các hệ điều hành tự do nguồn mở tương tự Unix và dựa trên Linux Kernel
  • Một hạt nhân hệ điều hành được phát hành lần đầu tiên vào 17/9/1991 bởi Linus Torvalds
  • Linux thường được đóng gói thành bản phân phối Linux
  • Linux được dùng trên máy tính cá nhân, điện thoại thông minh, hệ thống nhúng

1.2. Các nhánh phát triển

  • Debian – based: Debian, Ubuntu
    • Ubuntu - based
  • Pacman – based
    • Arch Linux – based: BlackArch, EndeavourOS, Manjaro
  • RPM – bassed: RHEL, SUSE Linux
    • Fedora – based
      • RHEL – based: RHEL, AlmaLinux, Rocky Linux, CentOS
    • OpenSUSE – based
    • Mandriva – based: Mageia, ROSA Linux
  • Gentoo – based
    • ChromeOS
  • Slackware – based: KateOS
  • Android – based: Android – x86, LineageOS, RemixOS
  • Source-based

2. Tìm hiểu về cách thức truy cập và tương tác với HĐH Linux: Terminal, Console, SSH protocol

2.1. Terminal

  • Terminal là một giao diện dòng lệnh cho phép người dùng truy cập trực tiếp vào hệ thống UNIX
  • Terminal có thể được sử dụng để
    • Tạo file, folders
    • Thay đổi cài đặt hệ thống
    • Nhiều tính năng khác
  • Terminal được tích hợp sẵn trong các bản phân phối Linux ở giao diện đồ hoạ, với các hệ thống sử dụng giao diện dòng lệnh thì khi khởi chạy hệ thống đã tự động truy cập vào Terminal

2.2. Console

  • Linux Console là một console hệ thống cho phép tương tác nội bộ vào nhân Linux
  • Linux Console cung cấp một cách thức để nhân và các tiến trình khác có thể nhận input từ người dùng cũng như trả lại kết quả (output)
  • Linux Console là một trong những tính ănng đầu tiên của nhân Linux và được viết lần đầu bởi Linus Torvalds năm 1991.
  • Có hai hình thức triển khai chính là framebuffer và text mode
    • Framebuffer là hình thức triển khai mặc định trong các bản phân phối Linux hiện đại ngày nay, cùng với các thiết đặt ở chế độ nhân, cung cấp sự hỗ trợ ở mức độ nhân cho các thiết bị hiển thị như hiện thị các hình vẽ đồ hoạ khi hệ thống được khởi động lên
    • Text mode được dùng trong các hệ thống tương thích với các card đồ hoạ CGA, EGA, MDA và VGA
  • Linux thường dùng các bitmap có kích cỡ cố định, fonts monospaces và thường có kích cỡ 8x16 cho mỗi kí tự

2.3. SSH Protocol

  • SSH là một chương trình tương tác giữa máy chủ và máy khách
  • SSH sử dụng cơ chế mã hoá đủ mạnh nhằm ngăn chặn hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền
  • SSH hoạt động mặc định ở cổng 22, TCP
  • SSH có các phương thức xác thực như
    • Bằng mật khẩu
    • Bằng cặp khoá công khai – riêng tư
    • Bằng thiết bị khoá bảo mật (FIDO2)
  • Một số SSH Client phổ biến: OpenSSH, PuTTY, BitviseSSH, MobaXTerm, Termius

3. Tìm hiểu về cấu trúc cây thư mục và các lệnh tương tác với thư mục: cd, pwd, mkdir, rm, rmdir, push, pop, tree, mv

3.1. Cấu trúc cây thư mục

  • /bin: chứa các đoạn mã nhị phân hoặc các chương trình được thực thi
  • /etc: Chứa các file cấu hình hệ thống
  • /home: Thư mục home, là thư mục mặc định mỗi khi khởi chạy Terminal
  • /opt: Các chương trình bên thứ 3 hoặc tuỳ chọn
  • /tmp: Thư mục chứa các file tạm, thường bị xoá mỗi khi khởi động lại hệ thống
  • /usr: Các chương trình liên quan tới người dùng
  • /var: Thường chứa các file log (Tuy nhiên em thấy có một ngoại lệ là thư mục mặc định của Apache Web Server là /var/www/html)
  • /boot: Chứa các thông tin liên quan tới việc khởi động hệ thống như cấu hình, grub, …
  • /dev: Chứa các file thiết bị (/dev/sda1, /dev/sda2)
  • /lib: Chứa những môđun về nhân và các thư viện dùng chung
  • /lost+found: Thường được dùng để tìm những bits được phục hồi tư những file hỏng
  • /media: Chứa các thư mục con là những thiết bị lưu trữ ngoại vi được cắm vào hệ thống
  • /mnt: Chứa các đường dẫn mount tạm thời của các file hệ thống
  • /proc: Chứa các file ảo và giả mã hệ thống chứa thông tin về một tiến trình đang chạy như là ID hay PID
  • /run: Chứa các dữ liệu voiatile runtime
  • /sbin: Chương trình thực thi nhị phân dành cho nhà quản trị
  • /srv: Chứa các file chuyên dụng cũng như các file liên quan dành cho server
  • /sys: Một hệ thống file ảo trong các hệ thống Linux hiện đại để lưu trữ và cho phép thực hiện các chỉnh sửa của các thiết bị kết nối tới hệ thống

3.2. Các lệnh tương tác với thư mục: cd, pwd, mkdir, rm, rmdir, push, pop, tree, mv

  • cd + đường dẫn: Chuyển tới một thư muc
  • pwd: Xem đường dẫn thư mục hiện tại
  • mkdir + tên thư mục: Tạo một thư mục mới
  • rmdir + đường dẫn: Xoá một thư mục ở đường dẫn được chỉ định
  • pushd: Lưu thư mục hiện tại vào một Stack và chuyển qua một thư mục mới
  • pop: Chuyển tới thư mục đang ở trên đầu Stack
  • tree: Hiển thị cây thư mục
  • mv + đường dẫn file cũ + đường dẫn file mới: Di chuyển một file/thư mục từ đường dẫn cũ sang đường dẫn mới

4. Tìm hiểu về cấu trúc tập tin và lệnh tương tác với tập tin: cat, head, tail, more, less, vim, nano, rm, grep

4.1. Lệnh tương tác với tập tin: cat, head, tail, more, less, vim, nano, rm, grep

  • cat + đường dẫn tập tin: Xem nội dung của tập tin
  • head – x + đường dẫn tập tin: Xem x dòng đầu tập tin
  • tail – x + đường dẫn tập tin: Xem x dòng cuối tập tin
  • more: Xem thông tin của nhiều file, mỗi file phân cách bằng một dòng
  • less: Xem thông tin của nhiều file, Cho phép chuyển qua giữa các file
  • vim: Tạo một file mới bằng trình soạn thảo văn bản vim
  • nano: Tạo một file mới bằng trình soạn thảo nano
  • rm: Xoá file
  • grep:
    • Cấu trúc: Câu lệnh A | grep “từ khoá”. Lọc “từ khoá” trong output của câu lệnh A

5. Tìm hiểu về người dùng, nhóm người dùng và các lệnh tương tác: useradd, groupadd, passwd, usermod, userdel

5.1. Người dùng và nhóm người dùng

  • Primary group
    • Group mặc định mà mỗi người dùng đều thuộc về, mỗi người dùng Linux thuộc về một Primary group
    • Được ghi trong file /etc/passwd
  • Secondary group
    • User có thể được add vào một hoặc nhiều secondary groups
    • Một user có thể ở trong tối đa 15 secondary groups
    • Được liệt kê trong file /etc/group
    • Các lệnh tương tác: useradd, groupadd, passwd, usermod, userdel
  • useradd + : Tạo một user mới
  • groupadd + : Tạo một group mới
  • passwd + : Đổi mật khẩu một user
  • usermod -a -G : Thêm hoặc gỡ bỏ một user vào/ra một hay nhiều group
  • userdel + : Xoá một user

6. Tìm hiểu về quyền và các lệnh tương tác: chmod, chown, setuid, getuid, umask

6.1. Quyền trong Linux

  • File trong Linux có ba quyền cơ bản
    • Quyền đọc: Read (r)
      • Quyền đọc sử dụng để đọc nội dung của một file bằng lệnh như cat
      • Quyền đọc cũng cần thiết để tạo ra những bản sao của file
    • Quyền ghi: Write (w)
      • Quyền ghi cần thiết khi chỉnh sửa hoặc thay đổi nội dung của một file
    • Quyền thực thi: Execute (x)
      • Quyền thực thi cho phép thi nội dung của file
      • Quyền thực thi có thể là những câu lệnh hoặc mã nhị phân đã được biên dịch
  • Thư mục trong Linux cũng có ba quyền cơ bản
    • Quyền đọc: Read (r)
      • Quyền đọc sử dụng để đọc nội dung của một thư mục bằng lệnh như ls
    • Quyền ghi: Write (w)
      • Quyền ghi cần thiết khi chỉnh sửa hoặc thay đổi nội dung của một thư mục như thêm hoặc xoá file, cũng như di chuyển file hay copy file vào/ra thư mmục
    • Quyền thực thi: Execute (x)
      • Cho phép xem thông tin mở rộng (Lệnh ls -l)
      • Cho phép thay đổi thư mục làm việc (cd)
    • Quyền của Linux cho một file cụ thể được chia ra để áp dụng lên 3 đối tượng
      • Người sở hữu file (u)
      • Nhóm sở hữu file (g)
      • Những đối tượng khác (o)
  • Trình tự kiểm tra quyền khi tương tác với một file
    • Kiểm tra xem user có phải là chủ sở hữu file không, nếu có thì không cần thao tác gì thêm
    • Nếu user không phải là chủ sở hữu file, thì kiểm tra xem user có trong nhóm cùng với user là chủ file không, nếu có thì áp dụng các quyền quy định cho nhóm sở hữu file, và không tiếp tục kiểm tra bước sau
    • Còn lại áp dụng quyền cho Những đối tượng khác
  • Quyền một file/Folder trong Linux được miêu tả như sau
    • Bằng kí tự
      • Quyền hiển thị khi xem thông tin file/folder (lệnh ls) bằng 9 kí tự
        • 3 kí tự đầu áp dụng cho Chủ sở hữu file
        • 3 kí tự tiếp áp dụng cho Nhóm sở hữu file
        • 3 kí tự cuối áp dụng cho các đối tượng khác
      • Trong mỗi block 3 kí tự
        • Kí tự thứ nhất có giá trị là r hoặc - : Đại diện cho quyền Read
        • Kí tự thứ hai có giá trị là w hoặc - : Đại diện cho quyền Write
        • Kí tự thứ ba có giá trị là x hoặc - : Đại diện cho quyền Execute
      • Ví dụ quyền: rw- r*—r—* có ý nghĩa là
        • Đối với chủ sở hữu file: rw-
          • Được phép Read
          • Được phép Write
          • Không được phép Execute
        • Đối với nhóm sở hữu file và các đối tượng khác: r—
          • Được phép Read
          • Không được phép Write
          • Không được phép Execute
    • Bằng số
      • Quy đổi kí tự ra số như sau
        • r (Read): 4
        • w (Write): 2
        • x (Execute): 1
      • Quyền dưới dạng số là một số có 3 chữ số
        • Chữ số đầu tiên là tổng các quyền của chủ sở hữu file
        • Chữ số thứ hai là tổng các quyền của nhóm sở hữu file
        • Chữ số thứ ba là tổng các quyền của các đối tượng khác
      • Ví dụ: Quyền rw- r*—r— đổi ra số sẽ như sau*
        • rw- = 4 + 2 + 1 = 7
        • r— = 4 + 0 + 0 = 4
        • Vậy quyền này có giá trị bằng số là 744
  • Thay đổi quyền một file bằng lệnh chmod
    • chmod + <quyền dưới dạng số>
    • Hoặc chmod + <tên nhóm> + <quyền>
    • Ví dụ
chmod ug+rwx example.txt
chmod o+r example2.txt
chmod 744 example3.txt

6.2. Các lệnh tương tác: chmod, chown, setuid, getuid, umask

  • chmod: Chỉnh sửa quyền của một file
  • chown: Chỉnh sửa đối tượng sở hữu một file
  • setuid: Cho phép người dùng thực thi tệp với quyền của chủ sở hữu
  • getuid: Trả về giá trị thực UserID đang thực thi tiến trình đó
  • umask: Giá trị mặc định khi tạo file hoặc thư mục mới

7. Tìm hiểu về tiến trình và các lệnh tương tác: ps, top, kill, nice

7.1. Tiến trình trong Linux

  • Tiến trình trong Linux là một ví dụ của một chương trình đang chạy. Bất cứ khi nào bạn chạy một lệnh trong Linux, một process mới sẽ được tạo
  • Mỗi tiến trình có một PID đại diện, gồm tối đa 5 chữ số & duy nhất tại một thời điểm. PID của tiến trình A có thể dùng lại sau khi tiến trình A kết thúc
  • Có 2 loại Process
    • Foreground Process: Mọi tiến trình khi bắt đầu chạy là Foreground Process, nhận input từ bàn phím và gửi output tới màn hình
    • Background Process:
  • Job ID và Process ID
    • Thường được thao tác thông qua JobID vì nó ngắn hơn Proccess ID
  • Parent Process và Child Process
    • Mỗi tiến trình có 2 ID được gán là PID và PPID
    • Mỗi tiến trình trong hệ thống có một Parent Process gốc

7.2. Các lệnh tương tác ps, top, kill, nice

  • ps: Dùng để liệt kê các tiến trình đang chạy hoặc một tiến trình cụ thể
  • top: Xem danh sách các tiến trình đang chạy trong hệ thống theo thời gian thực và cập nhật liên tục
  • kill: Dùng để ngắt (buộc dừng) một tiến trình cụ thể
  • nice: Cho phép người dùng ưu tiên việc thực thi của một tiến trình cụ thể

8. Tìm hiểu về systemctl và cấu trúc của một tập tin service

8.1. Systemctl

  • Systemctl là công cụ quản lí dịch vụ trong systemd
  • Các tính năng chính
    • Khởi động, dừng, khởi động lại dịch vụ
    • Kiểm tra trạng thái của dịch vụ
    • Xem các thông tin chi tiết về các dịch vụ
    • Quản lí các file cấu hình dịch vụ
  • Những lệnh cơ bản systemctl
    • Khởi động dịch vụ: systemctl start <tên service>
    • Dừng dịch vụ: systemctl stop <tên service>
    • Khởi động lại dịch vụ: systemctl restart <tên service>
    • Kiểm tra trạng thái dịch vụ: systemctl status <tên service>
    • Xem các thông tin chi tiết của dịch vụ: systemctl show <tên service>
    • Cài đặt dịch vụ tự khởi động cùng hệ thống: systemctl enable <tên service>
    • Ngăn chặn dịch vụ khởi động cùng hệ thống: systemctl disable <tên service>
    • Kiểm tra dịch vụ có khởi động cùng hệ thống hay không: systemctl is-enabled <tên service>

8.2. Cấu trúc tệp tin Services

  • Vị trí lưu tệp tin Services
    • /etc/systemd/system: Cho các service tuỳ chọn hoặc service overriden
    • /lib/systemd/system: Cho các service mặc định được cung cấp bởi các package đã cài đặt
  • Cấu trúc tệp tin Services
    • [Unit]: Chứa thông tin về metadata như phần mô tả hay những phần phụ thuộc (dependencies)
    • [Service]: Định nghĩa service nên được chạy như thế nào. Có thể bao gồm
      • Loại service
      • Câu lệnh để khởi chạy
      • Các thiết đặt cần thiết khác
    • [Install]: Đưa ra chỉ dẫn là service nên được “cài đặt” như thế nào, như là cách nó nên được kích hoạt hoặc khởi chạy khi khởi động
  • Ví dụ
[Unit]
Description=Simple Web Server

[Service]
ExecStart=/path/to/webserver/binary
Restart=always

[Install]
WantedBy=multi-user.target

9. Tìm hiểu về package, repository và các lệnh tương tác: yum, rpm, dnf, apt-get

9.1. Package và Repository

  • Package Management (Quản lí gói): Là một phương thức nhằm cài đặt và bảo trì các phần mềm trong hệ thống
  • Packaging system: Mỗi bản phân phối Linux có một hệ thống phân phối package riêng
  • Package file: Đơn vị cơ bản nhất của một Package và dược quản lí bởi Maintainer, là một dạng file nén chứa tất cả các thông tin cần thiết để cài đặt chương trình
  • Repository: Nơi tập trung chứa các Package file. Mỗi bản phân phối có thể có một vài repositories khác nhau phục vụ nhiều mục đích khác nhau, hoặc phục vụ cho từng quá trình phát triển phần mềm khác nhau
  • Dependencies: Một package thường được xây dựng dựa trên một số package khác
  • Trong Packaging System có 2 loại công cụ
    • Low-level package tool: Chịu trách nhiệm Install, Remove Package Files
      • Ví dụ: dpkg, rpm
    • High-level package tool: Xử lí tìm kiếm thông tin Metadata và cài đặt dependencies
      • Ví dụ: apt-get, apt, yum, dnf

9.2. Các lệnh tương tác: yum, rpm, dnf, apt-get

9.2.1. apt-get

  • Liệt kê toàn bộ những package có trên APT: apt-cache pkgnames
  • Tìm kiếm tên và thông tin về một package: apt-cache search <tên package>
  • Tìm kiếm các package bắt đầu bằng abc: apt-cache pkgnames abc
  • Kiểm tra thông tin về một package: apt-cache show <tên package>
  • Kiểm tra các phần phụ thuộc của một package: apt-cache showpkg <tên package>
  • Kiểm tra thông số về cache của apt: apt-cache stats
  • Cập nhật các package của hệ thống: apt-get update
  • Cập nhật các phần mềm của hệ thống: apt-get upgrade
  • Cập nhật các phần mềm của hệ thống (Nếu bạn không quan tâm tới các packages được thêm vào hay gỡ đi do phụ thuộc vào các phần mở rộng): apt-get dist-upgrade
  • Cài đặt hoặc nâng cấp một package cụ thể: apt-get install <tên package>
  • Cài đặt hoặc nâng cấp nhiều package cụ thể cùng một lúc: apt-get install <tên package 1> <tên package 2> (Phân cách bởi dấu cách)
  • Cài đặt một vài package bắt đầu hoặc kết thúc bởi một đoạn kí tự: apt-get install name (Nếu các bạn muốn cài các package bắt đầu bằng abc thì gõ abc* còn các package kết thúc bằng abc thì gõ *abc)
  • Cài đặt package mà không nâng cấp: apt-get install <tên package> –no-upgrade
  • Cập nhật một package cụ thể: apt-get install <tên package> –only-upgrade
  • Cài đặt một phiên bản cụ thể của một package: apt-get install <tên package>=phiên bản (Ví dụ: vsftpd=2.3.5-3ubuntu1)
  • Gỡ bỏ một packages không thông qua cấu hình: apt-get remove <tên package>
  • Gỡ bỏ hoàn toàn một packages: apt-get purge <tên package> hoặc apt-get remove –purge <tên package>
  • Dọn dẹp đĩa để tăng khoảng trống: apt-get clean
  • Chỉ tải về mã nguồn của packages: apt-get –download-only source <tên package>
  • Tải về và xả nén một package: apt-get source <tên package>
  • Tải về, xả nén và biên dịch một package: apt-get –compile source <tên package>
  • Tải về package nhưng không cài đặt apt-get download <tên package>
  • Kiểm tra changelog (Các thay đổi của từng phiên bản) của một package: apt-get changelog <tên package>
  • Kiểm tra các phần bổ trợ bị hỏng: apt-get check
  • Tìm kiếm và cài đặt các phần bổ trợ cần thiết cho một package: apt-get build-dep <tên package>
  • Tự động làm sạch Cache: apt-get autoclean
  • Gỡ bỏ package đã được cài đặt: apt-get autoremove<tên package>

9.2.2. Yum

  • Cài đặt Package: yum install
  • Cập nhật Package: yum update
  • Kiểm tra xem Package có update hay không: yum check update
  • Xoá package ra khỏi hệ thống: yum remove
  • Xoá package & dependencies ra khỏi hệ thống: yum erase
  • Tìm kiếm một packge: yum search
  • Liệt kê repo có sẵn: yum repolist
  • Truy xuất thông tin 1 Package: yum info
  • Hiển thị các package có sẵn: yum list
  • Hiển thị các Package đã cài đặt: yum list installed
  • Tìm kiếm thông tin một Package dựa vào file cấu hình của nó: yum provides
  • Hiển thị các group packages: yum grouplist
  • Cài đặt một group packages: yum groupinstall
  • Cập nhật một group packages: yum groupupdate
  • Gỡ bỏ một group packages: yum groupremove
  • Cài đặt một package từ một repostiories cụ thể: yum —enablerepo=<tên repo> install <tên package>
  • Xoá Yum Cache: yum clean all
  • Xem lại lịch sử lệnh Yum: yum history

9.2.3. dnf

  • Cài đặt dnf
    • yum install epel-release -y
    • yum install dnf
  • Kiểm tra phiên bản dnf: dn —version
  • Liệt kê các dnf repo đã kích hoạt: dnf repolist
  • Liệt kê các dnf repo đã kích hoạt & vô hiệu hoá: dnf repolist all
  • Liệt kê tất cả các gói có sẵn và đã cài đặt: dnf list
  • Liệ kê tất cả các gói đã cài đặt: dnf list installed
  • Tìm kiếm một gói: dnf search <tên gói>
  • Xem gói cung cấp một tệp tin/gói-phụ: dnf provides
  • Lấy thông tin chi tiết về một gói: dnf info <tên gói>
  • Cài đặt một gói: dnf install <tên gói>
  • Cập nhật một gói: dnf update <tên gói>
  • Kiểm tra cập nhật hệ thống: dnf check-update
  • Cập nhật tất cả các gói hệ thống sử dụng DNF: dnf update / dnf upgrade
  • Xoá gói: dnf remove <tên gói>
  • Cài đặt lại một gói: dnf reinstall <tên gói>
  • Hạ cấp một gói: dnf downgrade <tên gói>
  • Xoá các gói dư thừa: dnf autoremove
  • Xoá gói trong bộ nhớ cache: dnf clean all
  • Liệt kê các lệnh và tuỳ chọn của DNF: dnf help
  • Xem lịch sử của DNF: dnf history
  • Hiển thị các nhóm package: dnf grouplist
  • Cài đặt một nhóm dùng DNF: dnf groupinstall <Tên nhóm>
  • Cập nhật một nhóm: dnf groupupdate <Tên nhóm>
  • Xoá nhóm: dnf groupremove <Tên nhóm>
  • Đồng bộ các gói cài đặt với phiên bản ổn định: dnf distro-sync

10. Tìm hiểu về network và cách thức cấu hình mạng (Ubuntu).

10.1. Các giao diện Ethernet

  • Ethernet interfaces xuất hiện trong hệ thống bằng những cái tên như là eno1 hoặc enp0s25

10.1.1. Xác định các Ethernet interfaces

  • Sử dụng câu lệnh ip như ví dụ dưới
ip a
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
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
       valid_lft 3257sec preferred_lft 3257sec
    inet6 fe80::216:3eff:fee2:5242/64 scope link
       valid_lft forever preferred_lft forever
  • Hoặc sử dụng câu lệnh lshw để xem thông tin chi tiết hơn về phần cứng
sudo lshw -class network
  *-network
       description: Ethernet interface
       product: MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
       vendor: Mellanox Technologies
       physical id: 0
       bus info: pci@0004:01:00.0
       logical name: eth4
       version: b0
       serial: e4:1d:2d:67:83:56
       slot: U78CB.001.WZS09KB-P1-C6-T1
       size: 10Gbit/s
       capacity: 10Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm vpd msix pciexpress bus_master cap_list ethernet physical fibre 10000bt-fd
       configuration: autonegotiation=off broadcast=yes driver=mlx4_en driverversion=4.0-0 duplex=full firmware=2.9.1326 ip=192.168.1.1 latency=0 link=yes multicast=yes port=fibre speed=10Gbit/s
       resources: iomemory:24000-23fff irq:481 memory:3fe200000000-3fe2000fffff memory:240000000000-240007ffffff

10.1.2. Tên logic của các Ethernet interface

  • Có thể cấu hình thông qua Netplan
  • Có thể thiết lập bằng từ khoá match và set-name
  • Ví dụ
network:
  version: 2
  renderer: networkd
  ethernets:
    eth_lan0:
      dhcp4: true
      match:
        macaddress: 00:11:22:33:44:55
      set-name: eth_lan0

10.1.3. Thiết đặt các Ethernet Interface

  • ethtool là một công cụ có thể dùng để thiết lập các cài đặt như: auto-negotiation, port speed, duplex mode, Wake-on-LAN
  • Ví dụ
sudo ethtool eth4
Settings for eth4:
    Supported ports: [ FIBRE ]
    Supported link modes:   10000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: No
    Supported FEC modes: Not reported
    Advertised link modes:  10000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Advertised FEC modes: Not reported
    Speed: 10000Mb/s
    Duplex: Full
    Port: FIBRE
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000014 (20)
                   link ifdown
    Link detected: yes

10.2. Cấu hình địa chỉ IP

10.2.1. Cấu hình địa chỉ IP tạm thời

  • Cấu hình tạm thời sẽ bị mất sau khi hệ thống khởi động lại
sudo ip addr add 10.102.66.200/24 dev enp0s25
ip link set dev enp0s25 up
ip link set dev enp0s25 down
  • Sử dụng câu lệnh ip để kiểm tra xem thiết đặt đã có hiệu quả hay chưa
ip address show dev enp0s25
10: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:e2:52:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.102.66.200/24 brd 10.102.66.255 scope global dynamic eth0
       valid_lft 2857sec preferred_lft 2857sec
    inet6 fe80::216:3eff:fee2:5242/64 scope link
       valid_lft forever preferred_lft forever6
  • Để cấu hình gateway mặc định, có thể sử dụng câu lệnh ip route
sudo ip route add default via 10.102.66.1
ip route show
default via 10.102.66.1 dev eth0 proto dhcp src 10.102.66.200 metric 100
10.102.66.0/24 dev eth0 proto kernel scope link src 10.102.66.200
10.102.66.1 dev eth0 proto dhcp scope link src 10.102.66.200 metric 100 
  • Để thêm DNS server (tạm thời), chúng ta chỉnh sửa file /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
  • Để khôi phục lại các thiết đặt (Trừ DNS), chúng ta sử dụng câu lệnh
ip addr flush eth0

10.2.2. Cấu hình lấy IP qua DHCP (DHCP Client)

  • Chỉnh sửa file cấu hình /etc/netplan/99_config.yaml như dưới đây
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
  • Áp dụng cấu hình bằng lệnh
sudo netplan apply

10.2.3. Cấu hình IP tĩnh

  • Chỉnh sửa file cấu hình /etc/netplan/99_config.yaml như dưới đây
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 10.10.10.2/24
      routes:
        - to: default
          via: 10.10.10.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [10.10.10.1, 1.1.1.1]
  • Áp dụng cấu hình bằng lệnh
sudo netplan apply

10.3. Phân giải tên

10.3.1 Cấu hình DNS Client

  • File cấu hình DNS được symlink như sau
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • Cấu hình trong Netplan như ví dụ dưới đây
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 10.10.10.2/24
      routes:
        - to: default
          via: 10.10.10.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [10.10.10.1, 1.1.1.1]

10.3.2. Cấu hình hostnames tĩnh

  • Sử dụng file /etc/hosts
127.0.0.1   localhost
127.0.1.1   ubuntu-server
10.0.0.11   server1 server1.example.com vpn
10.0.0.12   server2 server2.example.com mail
10.0.0.13   server3 server3.example.com www
10.0.0.14   server4 server4.example.com file

Share this article

Related Posts