AWS Lab Guide – BUILD LOCAL DOMAIN CONTROLLER HYBIRD (Phần 1)

Xoay quanh chủ đề VPN, còn có rất nhiều tình huống khác nhau mà chúng ta còn phải thử nghiệm để xác minh tính khả thi của các công cụ mà AWS có thể cung cấp trước khi áp dụng vào thực tế. Trong bài lab Create Site to site VPN lần trước, mình đã hướng dẫn các bạn cách để xây dựng một kết nối riêng tư VPN giữa 2 site đều chạy Linux. Ở bài viết lần này, mình sẽ tiếp tục cùng các bạn tạo một kết nối riêng tư VPN site to site, nhưng Main site sẽ chạy Linux, còn Branch site sẽ chạy Windows server 2016 hoạt động như một NAT Gateway (vừa đảm nhiệm chức năng enpoint của VPN tunnel, vừa đóng vai trò NAT cho các server nằm trong cùng dải mạng đồng thời cung cấp kết nối cho các server này tới Main site).

Bên dưới là mô hình tổng quan các thành phần sẽ sử dụng trong bài lab ngày hôm nay.

Mô tả sơ đồ:

Main site bao gồm 2 EC2 chạy linux với lần lượt nằm trong các Subnet chạy Public và Private như trong hình vẽ. Cụ thể, EC2 thuộc Private subnet sẽ không được phép truy cập ra bên ngoài hay ngược lại, mà nó chỉ cho phép kết nối từ EC2 thuộc Public subnet. VPC của Main site được cấu hình Customer Gateway & Virtual Private Gateway để cung cấp kết nối VPN tới Branch site.

Branch site nằm trong VPC-Branch, được xây dựng để giả lập cho môi trường On-premise bao gồm 3 Windows server. Trong đó, Windows server thứ nhất nằm trong Public subnet có nhiệm vụ giống như jump host, cung cấp kết nối tới các Windows server nằm bên trong Private subnet. Các windows servers thuộc Private subnet đóng vai trò là Domain Controller và Server Gateway (như giải thích ở trên, đóng vai trò như một endpoint của VPN tunnel).

Kết quả của bài lab sau khi cấu hình VPN site-to-site Linux-Windows thành công thì đứng từ Branch site có thể truy cập vào các máy chủ chạy Linux thuộc Main site.

Bây giờ chúng ta cùng bắt tay vào thực hiện hand-on việc xây dựng kết nối VPN cùng với mình nhé!

1. CẤU HÌNH NETWORK

  • Tạo 2 VPC tại 2 AZ khác nhau

VPC-Main with CIDR block 10.10.0.0/16

VPC-Br with CIDR block 10.20.0.0/16

  • Trên cả 2 VPC, thực hiện tạo IGW  attach vào VPC tương ứng

IGW-Main attached to VPC-Main –> mục đích để tạo tunnel với Branch VPC

IGW-Br attached to VPC-Main –> mục đích để tạo truy cập từ internet tới server

Lưu ý: Tunnel được tạo ra chỉ sử dụng Main IGW và Elastic IP của server WinGW

  • Trên mỗi VPC, tạo các Public subnet tương ứng

Pubsub-Main with CIDR block 10.10.1.0/24

Pubsub-Br with CIDR block 10.20.1.0/24

  • Tiếp theo thực hiện tạo các Private subnet cho từng VPC

Prisub-Main with CIDR block 10.10.2.0/24

Prisub-WinDC-Br with CIDR block 10.20.4.0/24

Prisub1-WinGW-Br with CIDR block 10.20.2.0/24  –> subnet chính gắn với WinGW

Prisub2-WinGW-Br with CIDR block 10.20.3.0/24 

Lưu ý: subnet cho ENI attach thêm cho server WinGW (một Elastic IP sẽ được attach cho ENI này. Mục đích chính là kiểm thử Elastic IP và kiểm thử cách tạo một EC2 với 2 card Mạng thuộc 2 subnet khác nhau.

  • Chỉnh sửa lại Default Route Table cho từng VPC, trỏ tất cả traffic của Public subnet đi qua IGW

Names: RT-Main; Routes: Local,0.0.0.0/0 tới IGW-Main 

Names: RT-Br; Routes: Local,0.0.0.0/0 tới IGW-Br

2. KHỞI TẠO EC2 TRÊN CÁC VPC

Trên các VPC, thực hiện tạo lần lượt các EC2 theo như yêu cầu của bài lab và các Security group tương ứng đi kèm với chúng.

Lúc này, các địa chỉ Private IP thuộc Main site & Branch site vẫn chưa thể ping lẫn nhau.

2.1. Tạo Security Group cho EC2 tại Main Office

Mục đích: cấp quyền cho phép kết nối từ dải mạng của Branch Office đi tới Main Office

Public Security group: SG-MainPublic

Type: SSH; Source: My IP -> cho phép SSH từ remote laptop

Type: All TCP; Source: Custom, 10.20.0.0/16  -> allow TCP access from Branch office

Type: All UDP; Source: Custom, 10.20.0.0/16 -> allow UDP access from Branch office

Type: All ICMP – IPv4; Source: Custom, 10.20.0.0/16 & 10.10.0.0/16 -> allow Ping from Branch office and Main office

Private Security group: SG-MainPrivate

Type: SSH; Source: SG-MainPublic -> cho phép SSH từ máy public

Type: All TCP; Source: Custom, 10.20.0.0/16  & SG-MainPublic -> allow TCP access from Branch office & public server

Type: All UDP; Source: Custom, 10.20.0.0/16 & SG-MainPublic -> allow UDP access from Branch office & public server

Type: All ICMP – IPv4; Source: Custom, 10.20.0.0/16 & SG-MainPublic -> allow Ping from Branch office & public server

2.2. Tạo Security Group cho EC2 tại Branch Office

Mục đích: cấp quyền cho phép kết nối ngược lại từ dải mạng của Main Office đi tới Branch Office

Public Security group:SG-BranchPublic

Type: RDP; Source: My IP -> cho phép RDP từ remote laptop

Type: All TCP; Source: Custom, 10.10.0.0/16 -> allow TCP access from Main office

Type: All UDP; Source: Custom, 10.10.0.0/16 -> allow UDP access from network Main office

Type: All ICMP – IPv4; Source: Custom, 10.10.0.0/16 -> allow Ping from Main office

Private Security group:SG-BranchPrivate

Type: RDP; Source: SG-BranchPublic -> cho phép RDP từ máy public

Type: All TCP; Source: Custom, 10.10.0.0/16 & 10.20.0.0/16  & SG-BranchPublic -> allow TCP access from Main office & public server

Type: All UDP; Source: Custom, 10.10.0.0/16 & 10.20.0.0/16 & SG-BranchPublic -> allow UDP access from network Main office & public server

Type: All ICMP – IPv4; Source: Custom, 10.10.0.0/16 & 10.20.0.0/16 & SG-BranchPublic -> allow Ping from Main office & public server

2.3. Tạo EC2 nằm trong Main Office network

Thực hiện tạo Public EC2

AMI: Amazon Linux 2

Network: VPC-Main

Subnet: Pubsub-Main

Auto-assign Public IP: Enable

Tags: Key: Name; Value: EC2-MainPublic

Security group: SG-MainPublic

Key pair: ec2-kp

pub: 52.53.165.192

pri: 10.10.1.82

Thực hiện tạo Private EC2

AMI: Amazon Linux 2

Network: VPC-Main

Subnet: Prisub-Main

Auto-assign Public IP: Disable

Tags: Key: Name; Value: EC2-MainPrivate

Security group: SG-MainPrivate

Key pair: ec2-kp

pri: 10.10.2.30

2.4. Tạo EC2 nằm trong Branch Office network

Thực hiện tạo Public Win server

AMI: Winserver 2016

Network: VPC-Br

Subnet: Pubsub-Br

Auto-assign Public IP: Enable

Tags:Key: Name; Value: EC2-BranchPublic

Security group: SG-BranchPublic

Key pair: ec2-kp

pub: 52.43.102.154

pri: 10.20.1.30

Thực hiện tạo server Win server Domain Controller nằm trong Private subnet

AMI: Winserver 2016

Network: VPC-Br

Subnet: Prisub-WinDC-Br

Auto-assign Public IP: Disable

Tags:Key: Name; Value: EC2-WinDC

Security group: SG-BranchPrivate

Key pair:ec2-kp

pri: 10.20.4.240

Thực hiện tạo server Win server Gateway nằm trong Private subnet

AMI: Winserver 2016

Network: VPC-Br

Subnet: Prisub1-WinGW-Br

Auto-assign Public IP: Disable

Tags:Key: Name; Value: EC2-WinGW

Security group: SG-BranchPrivate

Key pair: ec2-kp

pri1 (eth0): 10.20.2.82 à địa chỉ của card mạng thứ 1 đi cùng Private subnet khai báo khi tạo EC2-WinGW

pri2 (eth1): 10.20.3.19 à là dịa chỉ sinh ra sau khi attach 1 ENI mới vào EC2-WinGW (ENI tạo trong Network Interface – 44.225.251.24 )

Lưu ý: Có thể có rất nhiều kịch bản để tạo ra một EC2 với 2 Ethernet Card, tuy nhiên sau nhiều thử nghiệm thực tế, để có thể cấu hình VPN thành công cần tuyệt đổi tuân thủ

  • EC2 Win-GW nhất định phải sử dụng một Elastic IP để có traffic đi ra ngoài Internet à không đưa Win-GW vào trong public subnet
  • Cả 2 network interface đều phải được cấu hình Static IP, bỏ DHCP. Ngoài ra chỉ giữ 1 Gateway IP address của Interface có assosiate với Elastic IP

Lưu ý: để tạo ENI mới, vào EC2 service page

Chọn VPC: VPC-Br

Chọn Subnet: Prisub2-WinGW-Br 

AZ: phải vùng AZ với EC2-WinGW

Thực hiện Attach vào EC2-WinGW

Lưu ý: để tạo Elastic IP, vẫn trong trang EC2 service page

  • Create new Elastic IP
  • Chọn Associate à chọn Network Interface à chọn ID của ENI mới được tạo ở trên.

Sau khi EC2-WinGW đã được tạo ra, thực hiện Disable checking Source/Destionation bằng cách

Truy cập EC2 service

Chọn EC2-BranchOffice-TA

Chọn Action

Chọn Networking

Chọn Change Source/Dest Check

Chon Yes, Disable

Lưu ý: Sau khi attach Elastic IP vào Network Interface mới mà attach vào server Win-GW thì có thể dẫn tới vấn đề liên quan tới routing

  • Thực hiện xóa route default đi ra theo pri1 – interface không được gán Elastic IP, để toàn bộ traffic được điều hướng đi theo pri2 –  Interface được gán Elastic IP.

# route delete 0.0.0.0 mask 0.0.0.0 <Gate_way> if <interface_id_pri1>

# route delete 0.0.0.0 mask 0.0.0.0 10.20.2.1 if 5

  • Bổ sung route mạng private của server Win-DC đi qua pri1

# route add 10.20.4.0 mask 255.255.255.0 <Gate_way> if <interface_id_pri1>

# route add 10.20.4.0 mask 255.255.255.0 10.20.2.1 if 5

Ở phần đầu tiên của bài lab này mình xin tạm dừng đây. Phần sau chúng ta sẽ bắt đầu thực hiện cấu hình VPN lần lượt tại 2 site Main & Branch.

Cám ơn các bạn đã đọc nhé! 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s