メインコンテンツまでスキップ

Quản lý Mạng (Networking)


Mô hình Network trong Linux


Xem cấu hình mạng

Network Interface

# ip addr — xem địa chỉ IP
ip addr # tất cả interface
ip addr show eth0 # interface cụ thể
ip -4 addr # chỉ IPv4
ip -6 addr # chỉ IPv6

# ip link — trạng thái layer 2
ip link # tất cả interface
ip link show eth0 # interface cụ thể
ip link set eth0 up # bật interface
ip link set eth0 down # tắt interface

# ifconfig (cũ hơn, cần net-tools)
ifconfig
ifconfig eth0
# Đọc output ip addr:
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
# link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
# inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
# └── IP/prefix └── broadcast

Routing

ip route                        # bảng routing
ip route show # tương đương
ip route get 8.8.8.8 # route sẽ dùng để đến 8.8.8.8

# Thêm/xoá route (tạm thời)
sudo ip route add 10.0.0.0/8 via 192.168.1.1
sudo ip route del 10.0.0.0/8

DNS

# Xem DNS đang dùng
cat /etc/resolv.conf # DNS server
cat /etc/hosts # local hostname mapping

# Tra cứu DNS
nslookup google.com # DNS lookup cơ bản
dig google.com # chi tiết hơn
dig google.com +short # chỉ IP
dig @8.8.8.8 google.com # hỏi server DNS cụ thể
dig google.com MX # MX record
dig google.com AAAA # IPv6 record
host google.com # đơn giản nhất

resolvectl status # trạng thái systemd-resolved (Ubuntu)

Kiểm tra kết nối

# ping — kiểm tra ICMP
ping google.com # ping liên tục
ping -c 4 google.com # chỉ 4 lần
ping -i 0.5 192.168.1.1 # mỗi 0.5 giây
ping -s 1400 192.168.1.1 # kiểm tra MTU (gói 1400 bytes)

# traceroute — theo dấu đường đi
traceroute google.com
tracepath google.com # không cần root
mtr google.com # real-time, kết hợp ping + traceroute

curl — HTTP Client (thiết yếu cho DevOps)

# GET request
curl https://api.example.com

# Chỉ xem header
curl -I https://example.com

# POST với JSON body
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TOKEN" \
-d '{"key": "value"}' \
https://api.example.com/endpoint

# Download file
curl -o file.zip https://example.com/file.zip
curl -L https://example.com # follow redirect
curl -v https://example.com # verbose (debug)
curl -s https://example.com # silent (không hiện progress)
curl --connect-timeout 5 -m 30 https://api.example.com # timeout

# Kiểm tra status code
curl -o /dev/null -s -w "%{http_code}" https://example.com
# Output: 200

wget — Download

wget https://example.com/file.tar.gz
wget -O myfile.tar.gz https://example.com/file.tar.gz
wget -q https://example.com/file.tar.gz # quiet
wget -c https://example.com/bigfile.tar.gz # tiếp tục download bị gián đoạn
wget -r https://example.com # download cả website

nc (netcat) — Network Swiss Army Knife

nc -zv 192.168.1.1 80               # kiểm tra port 80 có mở không
nc -zv 192.168.1.1 80-100 # kiểm tra range port
nc -l 8080 # lắng nghe port 8080 (test)
echo "hello" | nc 192.168.1.1 1234 # gửi dữ liệu raw

Xem kết nối và Port

# ss — socket statistics (thay thế netstat, nhanh hơn)
ss -tulpn # TCP/UDP listening với process name
ss -tn # TCP connections (established)
ss -s # tóm tắt thống kê
ss -tp # TCP với process info
ss -tulpn | grep :80 # ai đang dùng port 80?

# netstat (cũ hơn ss, cần net-tools)
netstat -tulpn # tương tự ss
netstat -an | grep ESTABLISHED # kết nối đang hoạt động
netstat -i # network interface statistics

# lsof — xem port qua process
lsof -i :80 # process dùng port 80
lsof -i :80 -i :443 # port 80 và 443
lsof -i TCP # tất cả TCP connections
# Đếm connection đến web server
ss -tn dst :80 | wc -l
ss -tn state ESTABLISHED dst :443 # HTTPS connections

Firewall

ufw — Ubuntu Firewall (dễ dùng)

sudo ufw status                     # trạng thái + rules
sudo ufw status verbose # chi tiết hơn
sudo ufw enable # bật firewall
sudo ufw disable # tắt firewall

# Cho phép
sudo ufw allow 22 # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow from 192.168.1.0/24 # cho phép subnet
sudo ufw allow from 10.0.0.5 to any port 5432 # PostgreSQL từ IP cụ thể

# Chặn
sudo ufw deny 23 # chặn telnet
sudo ufw deny from 1.2.3.4 # chặn IP

# Xoá rule
sudo ufw delete allow 80/tcp
sudo ufw delete 3 # xoá rule số 3 (theo ufw status numbered)

# Reset
sudo ufw reset # xoá tất cả rules

iptables — Low-level (mạnh hơn)

sudo iptables -L                    # liệt kê rules
sudo iptables -L -n -v # verbose với số liệu
sudo iptables -L --line-numbers # kèm số dòng

# Thêm rule
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # cho phép HTTP in
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # cho phép SSH
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT # cho phép HTTPS out
sudo iptables -P INPUT DROP # mặc định DROP input (cẩn thận!)

# Xoá rule
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

# Lưu rules (Ubuntu)
sudo iptables-save > /etc/iptables/rules.v4

Cấu hình mạng tĩnh (Static IP)

Netplan (Ubuntu 18.04+)

# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply              # áp dụng cấu hình
sudo netplan try # thử 120 giây rồi rollback

Bảng tổng kết lệnh Network

Tác vụLệnh
Xem IPip addr
Xem routingip route
Kiểm tra DNSdig domain.com
Pingping -c 4 host
Theo dõi routetraceroute host
Kiểm tra portnc -zv host port
Xem port mởss -tulpn
Ai dùng port 80lsof -i :80
HTTP requestcurl -I https://site
Downloadwget url
Firewall statussudo ufw status