Giới thiệu
Trong Google Cloud Platform (GCP), lưu lượng truy cập Ingress bị từ chối theo mặc định trong VPC (quy tắc ngầm định). Điều này có nghĩa là nếu bạn triển khai một máy ảo (VM) với một máy chủ web trên cổng 80 (HTTP), nó sẽ không thể truy cập từ Internet cho đến khi bạn cho phép rõ ràng bằng một quy tắc tường lửa Ingress.
Trong bài viết này, chúng ta sẽ:
- Triển khai một VM với Nginx.
- Kiểm tra truy cập vào VM → không thành công (không có quy tắc tường lửa).
- Tạo một quy tắc tường lửa Ingress với mục tiêu là Tất cả các phiên bản.
- Kiểm tra lại → thành công.
Tạo VM Instance
Bước 1: Tải lên script khởi động Nginx
Đầu tiên, bạn cần tải lên script khởi động nginx-webserver.sh lên Cloud Shell với nội dung như sau:
bash
#!/bin/bash
sudo apt install -y telnet
sudo apt install -y nginx
sudo systemctl enable nginx
sudo chmod -R 755 /var/www/html
HOSTNAME=$(hostname)
sudo echo "<!DOCTYPE html> <html>
<body style='background-color:rgb(250, 210, 210);'>
<h1>Chào mừng đến với Latchu@DevOps - WebVM App1 </h1>
<p><strong>Tên máy chủ VM:</strong> $HOSTNAME</p>
<p><strong>Địa chỉ IP VM:</strong> $(hostname -I)</p>
<p><strong>Phiên bản ứng dụng:</strong> V1</p>
<p>Google Cloud Platform - Demos</p>
</body></html>" | sudo tee /var/www/html/index.html
Bước 2: Tạo VM
Tiếp theo, tạo một VM bằng lệnh sau:
bash
gcloud compute instances create myvm1-allinstances \
--zone=us-central1-a \
--machine-type=e2-micro \
--network-interface=subnet=mysubnet1 \
--metadata-from-file=startup-script=nginx-webserver.sh
Bước 3: Xác minh VM
Kiểm tra danh sách VM để đảm bảo rằng VM đã được tạo thành công:
bash
gcloud compute instances list
- Xác nhận VM nằm trong
vpc2-custom→mysubnet1. - Lưu ý địa chỉ IP nội bộ và địa chỉ IP bên ngoài.
Bước 4: Kiểm tra trước khi áp dụng quy tắc tường lửa
Thực hiện các lệnh sau để kiểm tra kết nối trước khi tạo quy tắc tường lửa:
bash
telnet <EXTERNAL_IP> 80 # Kết quả sẽ thất bại
curl <EXTERNAL_IP> # Kết quả sẽ thất bại
- Nhận xét: Ứng dụng không thể truy cập (bị chặn bởi quy tắc Ingress ngầm định).
Tạo quy tắc tường lửa Ingress
Bước 1: Truy cập vào phần tường lửa
Đi tới VPC Networks → vpc2-custom → FIREWALLS → THÊM QUY TẮC TƯỜNG LỬA.
Bước 2: Cấu hình quy tắc
- Tên:
fw-ingress-80-allinstances - Mô tả: Cho phép lưu lượng vào cổng 80 cho tất cả các phiên bản trong mạng
- Mạng:
vpc2-custom - Độ ưu tiên: 1000
- Hướng lưu lượng: Ingress
- Hành động khi khớp: Cho phép
- Đối tượng: Tất cả các phiên bản trong mạng
- Bộ lọc nguồn: Dải IPv4
- Dải IPv4 nguồn:
0.0.0.0/0 - Giao thức và cổng: TCP → 80
Nhấn Create để hoàn tất.
Truy cập ứng dụng
Bước 1: Xác minh lại danh sách VM
Kiểm tra lại danh sách VM:
bash
gcloud compute instances list
Bước 2: Kiểm tra sau khi áp dụng quy tắc tường lửa
Thực hiện các lệnh sau để kiểm tra kết nối sau khi tạo quy tắc tường lửa:
bash
telnet <EXTERNAL_IP> 80 # Kết quả sẽ kết nối thành công
curl <EXTERNAL_IP> # Kết quả sẽ trả về trang HTML
Bước 3: Kiểm tra qua trình duyệt
Mở trình duyệt và truy cập địa chỉ:
http://<EXTERNAL-IP>
Dọn dẹp
Bước 1: Xóa quy tắc tường lửa
bash
# Xóa quy tắc tường lửa
gcloud compute firewall-rules delete fw-ingress-80-allinstances
Bước 2: Xóa VM
bash
# Xóa VM
gcloud compute instances delete myvm1-allinstances --zone=us-central1-a --delete-disks=all
✅ Bài học quan trọng
- Nếu không có quy tắc tường lửa → Lưu lượng Ingress bị từ chối theo mặc định.
- Với mục tiêu = Tất cả các phiên bản → Mọi VM trong VPC có thể nhận lưu lượng trên cổng đã cho.
- Đối với môi trường sản xuất, tốt hơn là sử dụng thẻ hoặc tài khoản dịch vụ thay vì "tất cả các phiên bản" để hạn chế tiếp xúc.
Thực tiễn tốt nhất
- Luôn kiểm tra quy tắc tường lửa trước khi triển khai.
- Sử dụng các thẻ để phân loại và quản lý quyền truy cập tốt hơn.
Những cạm bẫy phổ biến
- Không xác định đúng dải IP nguồn có thể dẫn đến việc chặn lưu lượng không mong muốn.
Mẹo hiệu suất
- Giảm độ ưu tiên của quy tắc tường lửa để tăng cường bảo mật.
Khắc phục sự cố
- Nếu không thể truy cập ứng dụng, kiểm tra lại cấu hình tường lửa và xác nhận rằng VM đang chạy.
Câu hỏi thường gặp (FAQ)
- Tại sao lưu lượng Ingress bị chặn theo mặc định?
- Để bảo vệ các VM khỏi các mối đe dọa từ bên ngoài.
- Có thể sử dụng quy tắc tường lửa cho các cổng khác không?
- Có, bạn chỉ cần thay đổi số cổng trong cấu hình quy tắc tường lửa.
Kết luận
Trên đây là hướng dẫn chi tiết cách cấu hình quy tắc tường lửa VPC trong GCP để cho phép lưu lượng truy cập đến các VM của bạn. Hãy áp dụng những gì bạn đã học để đảm bảo rằng các ứng dụng của bạn luôn sẵn sàng và an toàn. Nếu có thắc mắc, hãy để lại câu hỏi bên dưới!