Danh sách bài viết trong series Networking cho DevOps
- Bài 1. Networking trong DevOps: Hiểu Biết Nền Tảng để Thành Công
- Bài 2. Địa chỉ IP và Subnetting Nâng Cao: Thiết Kế Mạng Hiệu Quả trong DevOps
- Bài 3. Giao thức TCP và UDP: Cách Dữ Liệu Di Chuyển trong DevOps
- Bài 4. DNS và Phân Giải Tên: Bí Mật Kết Nối Tên Miền trong DevOps
- Bài 5. Routing và Switching Cơ Bản: Hiểu Cách Dữ Liệu Tìm Đường trong DevOps
- Bài 6. NAT và Firewall trong Mạng: Kiểm Soát Lưu Lượng trong DevOps
- Bài 7. VLAN và Thiết Kế Mạng Phân Đoạn: Cô Lập Lưu Lượng Hiệu Quả trong DevOps
- Bài 8. Phân Tích Lưu Lượng Mạng trong DevOps: Hiểu Gói Tin để Debug Hiệu Quả
- Bài 9: Bảo Mật Mạng Chuyên Sâu: Bảo Vệ Hệ Thống DevOps Trước Mối Đe Dọa
- Bài 10. Thiết Kế Mạng cho Hệ Thống DevOps: Tối Ưu Hiệu Năng và Độ Tin Cậy
- Bài 11. SDN trong DevOps: Tự Động Hóa Mạng cho Hệ Thống Phân Tán
- Bài 12. QoS trong DevOps: Tối Ưu Hiệu Năng Mạng với Quality of Service
- Bài 13. Network Automation trong DevOps: Tự Động Hóa Mạng với Ansible và Python
- Bài 14. Zero Trust Networking trong DevOps: Bảo Mật Hệ Thống Không Tin Ai
- Bài 15. Network Troubleshooting Nâng Cao: Debug Mạng Hiệu Quả trong DevOps
NAT và Firewall trong Mạng: Kiểm Soát Lưu Lượng trong DevOps
Bạn có bao giờ tự hỏi làm sao hàng trăm server trong mạng nội bộ lại truy cập Internet qua một IP duy nhất? Hay làm thế nào để chặn truy cập trái phép vào pipeline CI/CD? NAT trong DevOps và firewall mạng là hai công cụ mạnh mẽ để kiểm soát lưu lượng. Trong bài thứ sáu của series, chúng ta sẽ đi sâu vào NAT và PAT, cách firewall bảo vệ mạng, và thực hành cơ bản để áp dụng trong DevOps.
NAT Trong DevOps: Kết Nối Nội Bộ với Thế Giới
NAT Là Gì?
NAT (Network Address Translation) là kỹ thuật ánh xạ địa chỉ IP riêng (private) thành IP công cộng (public) để truy cập Internet.
- Cơ chế: Router thay đổi IP nguồn trong header gói tin trước khi gửi ra ngoài.
- Lợi ích:
- Tiết kiệm IP công cộng.
- Ẩn mạng nội bộ, tăng bảo mật.
Ví dụ: Một server DevOps (192.168.1.10
) gửi request qua router (IP công: 203.0.113.1
). NAT thay IP nguồn thành 203.0.113.1
để giao tiếp với server bên ngoài.
NAT và PAT: Sự Khác Biệt
- NAT: Ánh xạ 1:1 (một IP riêng → một IP công).
- PAT (Port Address Translation): Ánh xạ nhiều IP riêng → một IP công, dùng port để phân biệt.
- Ví dụ:
192.168.1.10:12345
và192.168.1.11:54321
đều thành203.0.113.1
với port khác nhau.
- Ví dụ:
Trong DevOps: PAT phổ biến trong VPC hoặc mạng nội bộ, cho phép nhiều container/microservices dùng chung IP công.
Firewall Mạng: Lá Chắn Bảo Vệ Hệ Thống
Firewall Là Gì?
Firewall là thiết bị hoặc phần mềm lọc lưu lượng mạng dựa trên rule (quy tắc).
- Stateful: Theo dõi trạng thái kết nối (ví dụ: chỉ cho phép gói tin thuộc kết nối đã thiết lập).
- Stateless: Kiểm tra từng gói tin độc lập.
Ví dụ: Firewall chặn port 22 (SSH) từ IP ngoài để bảo vệ server CI/CD.
Iptables: Công Cụ Firewall Linux
- Cấu trúc: Dùng chain (INPUT, OUTPUT, FORWARD) để định nghĩa rule.
- Ví dụ rule:
- Chặn port 80:
iptables -A INPUT -p tcp --dport 80 -j DROP
- Cho phép SSH từ IP cụ thể:
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.10 -j ACCEPT
- Chặn port 80:
Ứng dụng: Trong DevOps, firewall bảo vệ runner, giới hạn truy cập database, hoặc chặn DDoS.
NAT và Firewall trong DevOps: Ứng Dụng Thực Tế
NAT trong Hệ Thống Phân Tán
- VPC: Server trong subnet private (
10.0.0.0/16
) dùng NAT gateway để ra Internet. - Debug: Job không pull được image? Kiểm tra NAT có hoạt động không.
Firewall Bảo Mật Pipeline
- CI/CD: Chỉ cho phép IP của runner truy cập port 443 (HTTPS) trên registry.
- Microservices: Chặn lưu lượng ngoài vào port nội bộ (như 3306 của MySQL).
Ví dụ: Một team DevOps cấu hình NAT sai, khiến server không ra Internet, trong khi firewall chặn nhầm port 8080 làm ứng dụng không chạy.
Thực Hành: Cấu Hình NAT và Firewall
Test NAT với Netcat
- Server nội bộ (giả lập NAT):
nc -l 12345
- Client: Gửi qua IP công của router (thực tế cần NAT rule trên router):
echo "Test NAT" | nc <router-public-ip> 12345
Cấu Hình Firewall với Iptables
- Chặn port 80:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
- Kiểm tra:
curl localhost:80 # Không phản hồi
- Mở lại port 80:
sudo iptables -D INPUT -p tcp --dport 80 -j DROP
Debug tip:
- Xem rule:
sudo iptables -L -n
. - NAT không hoạt động? Kiểm tra router hoặc dùng
tcpdump
xem gói tin có qua gateway không.
Kết Luận
NAT trong DevOps giúp kết nối mạng nội bộ với bên ngoài, trong khi firewall mạng bảo vệ hệ thống khỏi truy cập trái phép. Hiểu NAT và PAT, cách dùng iptables, và ứng dụng thực tế là bước quan trọng để làm chủ bảo mật mạng. Bài tiếp theo, chúng ta sẽ khám phá VLAN và thiết kế mạng phân đoạn – cách cô lập lưu lượng trong DevOps.
Bài tập nhỏ:
- Chạy
iptables -L
và giải thích một rule bất kỳ. - Dùng
nc
gửi dữ liệu qua port 12345, rồi chặn port đó bằng iptables. Điều gì xảy ra?
Tiếp tục series để nâng cao kỹ năng bảo mật mạng trong DevOps!