Khi cài đặt MongoDB, theo mặc định chỉ cho phép truy cập cơ sở dữ liệu (CSDL) cục bộ tại máy cài đặt, để truy cập từ xa đến CSDL này bạn cần cấu hình thêm.

Giả sử như mô hình dưới đây chúng ta có:
– Mạng LAN 192.168.1.0/24 với máy MongoDB được cài đặt ở IP 192.168.1.10 và máy chạy ứng dụng (APP) có IP 192.168.1.20
– IP WAN của mạng LAN là 100.100.100.100
– Một máy truy cập từ xa có IP LAN 10.0.0.10

Bây giờ chúng ta cần cấu hình để cho máy APP và các máy bên ngoài có thể truy cập được vào CSDL MongoDB có IP 192.168.1.10

1. Cấu hình Bind IP trên MongoDB

Tùy theo việc bạn cài đặt MongoDB trên máy chủ Linux Server khác nhau (Ubuntu, CentOS,…) mà file cấu hình của MongoDB có đôi chút khác nhau về tên biến, đường dẫn file cấu hình,.. Trong bài hướng dẫn này, mình sẽ cấu hình MongoDB trên máy chủ Ubuntu Server.

Trên Ubuntu Server, mặc định file cấu hình MongoDB được lưu tại /etc/mongod.conf , bạn mở file cấu hình này và chú ý đoạn sau:

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1

Măc định chỉ có địa chỉ local 127.0.0.1 là được MongoDB cho phép truy cập và đồng nghĩa với việc sẽ block các kết nối khác đến CSDL MongoDB.

Nếu bạn không đề cao vấn đề bảo mật, bạn có thể comment dòng bindIp lại và khi đó CSDL của bạn sẽ chấp nhận mọi kết nối đến, tuy nhiên thực tế điều này không an toàn và không được khuyên sử dụng.

1.1. Cho phép truy cập từ địa chỉ LAN

Để cho phép các IP trong cùng mạng LAN truy cập vào máy chủ MongoDB, bạn tùy chỉnh cấu hình như sau:

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.10

Trong đó, 192.168.1.10 là địa chỉ IP của máy CSDL MongoDB, chứ không phải bất kỳ địa chỉ IP LAN nào khác.

1.2. Cho phép truy cập từ địa chỉ bên ngoài LAN

Để cho phép các truy cập từ xa (như mô hình là IP 10.0.0.10) vào máy chủ MongoDB, bạn cần cho phép bindIp từ IP WAN

# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.10,100.100.100.100

Để các thay đổi này có hiệu lực, bạn cần restart lại dịch vụ mongodb:

systemctl restart mongod.service

Khi restart thành công, bạn đã có thể truy cập CSDL qua mạng LAN mà không phải làm thêm cấu hình nào khác. Đối với việc truy cập từ xa, bạn có 2 cách phổ biến để kết nối:
– Tạo kết nối VPN từ xa vào mạng LAN và có thể truy cập giống như trong LAN
– Mở port trên firewall có IP WAN 100.100.100.100 để cho phép kết nối đến máy chủ MongoDB bên trong mạng LAN

=> Cách kết nối VPN luôn được đảm bảo an toàn nhất và được khuyên dùng, nếu bạn sử dụng cách mở port bạn cần xem mục số 2 dưới đây.

2. Cấu hình Firewall cho phép truy cập ngoài mạng LAN

Khi bạn có firewall bảo vệ mạng LAN, việc bạn cần làm là mở kết nối trên port 27017 (đây là port mặc định của MongoDB)

Tùy theo các firewall được cài đặt mà có các cấu hình khác nhau, giả sử ở đây mình sử dụng ipTables để mở cổng thì mình sẽ tạo ra rule như sau:

iptables -A INPUT -p tcp --dport 27017 -j ACCEPT

hoặc tùy chỉnh cụ thể theo địa chỉ IP như sau:

iptables -A INPUT -s 10.0.0.10 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 10.0.0.10 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

Sau cùng, bạn cần lưu lại cấu hình và restart lại cấu hình firewall.

Chúc các bạn thành công.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây