Skip to content Skip to main navigation Skip to footer

Limit IP aaPanel cùng với Dynamic DNS

I. Giới Thiệu Chung Về Dynamic DNS

Dynamic DNS hay DDNS viết tắt là Dynamic Domain Name System. DDNS thay thế cho IP tĩnh, cho phép người dùng không cần đến ISP cung cấp IP tĩnh vẫn có thể truy cập vào hệ thống của mình từ xa.
Dynamic DNS đưa lên mạng Internet các dịch vụ như Web Server, Mail Server, truy cập vào hệ thống nội bộ, camera giám sát tại cơ sở của mình qua đường truyền internet. Dynamic DNS là phương thức ánh xạ tên miền tới địa chỉ IP với tần suất thay đổi (IP WAN).
Vì không phải tất cả các máy tính đều sử dụng địa chỉ IP tĩnh. Phương thức hoạt động của Dynamic DNS là gì?
Trong hệ thống máy chủ DNS, mỗi tên miền phải được trỏ đến một địa chỉ IP tĩnh. Tuy nhiên hiện nay các nhà mạng thường cung cấp các địa chỉ IP động thay đổi theo những chu kỳ nhất định. Khi địa chỉ IP thay đổi, ảnh hưởng đến các cấu hình như webserver, các dịch vụ đã được set IP cố định.

Để khắc phục tình trạng IP động này, DDNS đã được ra đời. DDNS cung cấp những dữ liệu liên quan đến quá trình kết nối giữa IP với tên miền.
Ngoài ra, DDNS còn cung cấp cập nhật cơ sở dữ liệu một cách linh hoạt, phù hợp với yêu cầu thực của người sử dụng. Dynamic DNS hoạt động bằng cách tạo ra một chương trình mang tên Dynamic DNS Client được chạy trên máy tính của người dùng.
Dynamic DNS Client giữ vai trò theo dõi và kiểm soát bất kỳ sự thay đổi nào từ IP máy chủ.
Sau đó client phát thông báo những thay đổi đến hệ thống máy chủ DNS. Đồng thời cũng cập nhật những thông tin thay đổi vào cơ sở dữ liệu. Do đó dù có sự thay đổi địa chỉ IP thường xuyên từ phía máy chủ thì DNS vẫn trỏ chính xác địa chỉ tên miền đúng với IP mới.

Hiện tại một số nhà cung cấp DDNS hỗ trợ miễn phí. Bạn có thể đăng ký để sử dụng

Như dịch vụ No-IP , Duck DNS,.., Hoặc các bạn có thể sử dụng DDNS có phí nhé.

II. Ưu Nhược Điểm Limit IP cùng với Dynamic DNS

Ưu Điểm:

Tuy nhiên, áp dụng Limit IP aaPanel cùng với Dynamic DNS cho các danh nghiệp vừa và nhỏ để tối ưu chi phí thuê IP tĩnh, để bảo mật tốt nhất chỉ áp dụng ở mạng nội bộ, không áp dụng cho các thiết bị di chuyển như điện thoại, laptop,..
Ngoài ra mạng nội bộ áp dụng bộ lọc MAC nữa thì cũng sẽ đảm bộ bảo an toàn cho thệ thống.

Có thể áp dùng Dynamic DNS vào các client hoặc phòng ban để tăng cường bảo mật kết nội bộ, để có thể thay thế tạm thời cho hệ thống VPN.

Nhược Điểm:

Không áp dụng linh hoạt cho các thiết bị ngoài mạng nội bô như điên thoại, laptop di chuyển sử dụng ở mạng khác, khi bật tính năng Dynamic DNS thì IP WAN mạng đó sẽ tự động đưa vào danh sách whitelist.txt.
Về độ bảo mật thì sử dụng VPN là 1 giải pháp tối ưu hơn Dynamic DNS, vì whitelist IP Wan bất kỳ ở nhà mạng ISP.

III Các Bước Thực Hiện

Bước 1: Đăng ký DNS trung gian

Trong hướng dẫn này mình đăng ký Duck DNS để sử dụng.

Bạn truy cập vào trang chủ Duck DNS để tạo sub domain. Ở hướng dẫn mình tạo sub kythuat và ketoan để demo

Limit IP aaPanel cùng với Dynamic DNS

1. Thiết Lập Kết Nói ở máy client

Truy cập vào mục install ở trang Duck DNS mình chọn nền tản OS tương ứng để cài đặt, ở hướng dẫn này mình sử dụng windows.

Tuy cập vào etx.ca để cài đặt kết ở client, tuy nhiên máy chưa có java phải cài đặt ở đây để sử dụng.

Sau khi chọn sub kyhuat.duckdns.org sẽ có thông tin gồm domain và and token

Sau khi đã thực thực hiện connect từ client với server duckdns ở cùng với đã thành công kyhuat.duckdns.org

Riêng sub ketoan.duckdns.org vẫn thực hiện connect tương tự như kyhuat.duckdns.org.

2. Thực Hiện limit IP ở webserver và allow IP vào sanh sách file whitelist.txt

Để tăng cường bảo mật thông tin nội bộ, quản trị hệ thống chỉ cho phép IP cố định như IP tĩnh hoặc IP của VPN.

Tuy nhiên IP Wan của nhà cung cấp ISP sẽ được thay đổi gặp khó khăn trong quá trình truy cập hệ thống cho nhân viên. để IP Wan IP update vào danh sách whitelist.txt, bạn thực hiện thêm script bash shell để thực hiện:

Để thực hiện được lệnh dig cần cài đặt bind-utils

AZDIGI Tutorial
	
 Cài đặt trên centos
	yum install bind-utils -y
 Cài đặt trên ubuntu
        apt update
	apt install dnsutils

    

Để thực hiện sanh sách các phòng ban hoạt động riêng biệt độc lập giữa các IP WAN khác như mình cấu hình script tương ứng với kyhuat.duckdns.orgketoan.duckdns.org

Tạo đoạn script bash shel để update IP kythuat

AZDIGI Tutorial
mkdir -p /www/dddns/kythuat

vi /www/dddns/kythuat/kythuat.ip

#!/bin/sh
# nginx auto whitelist Dynamic DNS script
AZZ=allow
DDNS="kyhuat.duckdns.org"

# Populate dynamic IP if file doesn't exist
if [ ! -f /www/dddns/whitelist-ip/kythuat-ip ]; then
    echo "$AZZ $(dig x +short $DDNS);" > /www/dddns/whitelist-ip/kythuat-ip
fi

CURRENT=$(cat /www/dddns/whitelist-ip/kythuat-ip)
FRESH="$AZZ $(dig x +short $DDNS);"

#Test if current IP is same as fresh and reload nginx if not
if [ "$CURRENT" != "$FRESH" ]; then
    echo "$AZZ $(dig x +short $DDNS);" > /www/dddns/whitelist-ip/kythuat-ip
fi

chmod +x /www/dddns/kythuat/kythuat.ip
    

Tạo đoạn script bash shell để update IP ketoan

a
AZDIGI Tutorial
mkdir -p /www/dddns/ketoan

vi /www/dddns/ketoan/ketoan.ip

#!/bin/sh
# nginx auto whitelist Dynamic DNS script
AZZ=allow
DDNS="ketoan.duckdns.org"

# Populate dynamic IP if file doesn't exist
if [ ! -f /www/dddns/whitelist-ip/ketoan-ip ]; then
    echo "$AZZ $(dig x +short $DDNS);" > /www/dddns/whitelist-ip/ketoan-ip
fi

CURRENT=$(cat /www/dddns/whitelist-ip/ketoan-ip)
FRESH="$AZZ $(dig x +short $DDNS);"

#Test if current IP is same as fresh and reload nginx if not
if [ "$CURRENT" != "$FRESH" ]; then
    echo "$AZZ $(dig x +short $DDNS);" > /www/dddns/whitelist-ip/ketoan-ip
fi

chmod +x /www/dddns/whitelist-ip/ketoan-ip
    

2.1 Chuyển các IP update từ dnsdynamic vào file whitelist-ip.txt vào php-fpm tương ứng php


mkdir -p /www/dddns/conf

cat > "/www/dddns/conf/whitelist-ip.txt" << END
include /www/dddns/whitelist-ip/ketoan-ip;
include /www/dddns/whitelist-ip/kythuat-ip;
END

Ở aaPanel sử dụng php 7.4 truy mở file /www/server/nginx/conf/enable-php-74.conf
Tiến hành backup lại file trước khi thao tác điều chỉnh

cp  /www/server/nginx/conf/enable-php-74.conf  /www/server/nginx/conf/enable-php-74.conf.bak
AZDIGI Tutorial
vi /www/server/nginx/conf/enable-php-74.conf
        location ~ [^/]\.php(/|$)
        {
                include /www/dddns/conf/whitelist-ip.txt;
                deny all;
                try_files $uri =404;
                fastcgi_pass  unix:/tmp/php-cgi-74.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                include pathinfo.conf;
                #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                #fastcgi_split_path_info ^(.+\.php)(.*)$;
        }

    

Để update IP Wan hoặc truy cập vào VPN đã thay thay đổi IP mới bạn thực hiện update như ở hình hoặc chờ 5 phút tự động update

2.2 Thiết Lập Cron để update IP mới trên Service update vào danh sách whitelist-ip.txt

cat > "/www/cron-update-whitelist-ip.sh" << END
#!/bin/sh
sh /www/dddns/ketoan/ketoan.ip
sh /www/dddns/kythuat/kythuat.ip
END
chmod +x /www/cron-update-whitelist-ip.sh

Bạn có thể thiết lập cron ở aapanel đã hỗ trợ sẵn

Trường hợp bạn truy cập website chưa thành công bị lỗi 403 như ở hình. Bạn vui lòng chờ sau 1 phút để cron update IP. Sau đó bạn có thể truy cập bình thường.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới: