? ? ? ? 在我們平常的開發工作中,項目開發、測試完成后進行部署上線。比如電商網站、新聞網站、社交網站等,通常對訪問不會進行限制。但是像企業內部網站、內部管理系統等,這種系統一般都需要限制訪問,比如內網才能訪問等。那么一個網站應該如何限制特定的 IP 訪問呢?今天我們來總結下實現的幾種方法。
? ? ? 一:通過 nginx 配置
? ? ? ? 1:可以在 nginx.conf 中設置 IP 訪問限制,示例如下:
user nginx;
worker_processes auto;error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;access_log /var/log/nginx/access.log main;sendfile on;server {listen 80;server_name localhost;# 只允許某個特定 IP 地址訪問allow 192.168.1.1;deny all;# 允許訪問的 IP 列表,這個命令表示允許的 IP 范圍為 192.168.1.0 到 192.168.1.254allow 192.168.1.0/24;deny all;# 拒絕某個特定 IP 訪問deny 192.168.1.1;allow all;# 拒絕該 IP 列表訪問 deny 192.168.1.0/24;allow all;location / {root /usr/share/nginx/html;index index.html index.htm;}}
}
? ? ? ? 2:當前訪問的 IP 地址在 nginx 配置允許的 IP 列表中時,訪問頁面如下:
? ? ? ? 3:當前訪問的 IP 地址不在 nginx 配置允許的 IP 列表中時,會看到訪問拒絕,訪問頁面如下:
? ? ? ? 4:總結
? ? ? ? 設置允許訪問的 IP:
? ? ? ? (1):只允許某個特定 IP 地址訪問,如表示只有 IP 地址為?192.168.1.1 能訪問,示例如下:
allow 192.168.1.1;
deny all;
????????(2):允許訪問的?IP 列表,如表示 192.168.1.0 到 192.168.1.254 的 IP 地址能訪問,示例如下:
allow 192.168.1.0/24;
deny all;
? ? ? ? 設置不能訪問的 IP:
????????(1):設置某個特定 IP 地址訪問,如表示只有 IP 地址為?192.168.1.1 不能訪問,示例如下:
deny 192.168.1.1;
allow all;
????????(2):不允許訪問的 IP 列表,如表示 192.168.1.0 到 192.168.1.254 的 IP 地址不能訪問,示例如下:
deny 192.168.1.0/24;
allow all;
? ? ?二:通過防火墻設置
? ? ? ? 在 Centos 6 及之前版本,iptables?作為防火墻管理工具,在 Centos 7 及之后版本,使用?firewalld 作為防火墻管理工具。
? ? ?1:使用?iptables?限制 IP 訪問
? ? ? ? 設置允許訪問的 IP:
? ? ? ? (1):允許某個特定 IP 訪問,示例如下:
# 只允許 192.168.1.1 能訪問
iptables -A INPUT -s 192.168.1.1 -j ACCEPT# 保存規則命令
service iptables save
? ? ? ? (2):允許訪問的?IP 段,示例如下:
# 允許 192.168.1.0 - 192.168.1.254 能訪問
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT# 保存規則命令
service iptables save
? ? ? ? 設置不能訪問的 IP:
????????(1):不允許某個特定 IP 訪問,示例如下:
# 不允許 192.168.1.1 訪問
iptables -A INPUT -s 192.168.1.1 -j DROP# 保存規則命令
service iptables save
???????? (2):不允許訪問的 IP 段,示例如下:
# 不允許 192.168.1.0 - 192.168.1.254 訪問
iptables -A INPUT -s 192.168.1.0/24 -j DROP# 保存規則命令
service iptables save
? ? ? 2:使用?firewalld?限制 IP 訪問
????????設置允許訪問的 IP:
? ? ? ? (1):允許某個特定 IP 訪問,示例如下:
# 只允許 192.168.1.1 能訪問
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" accept'# 重新加載防火墻
firewall-cmd --reload
? ? ? ? (2):允許訪問的?IP 段,示例如下:
# 允許 192.168.1.0 - 192.168.1.254 能訪問
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'# 重新加載防火墻
firewall-cmd --reload
? ? ? ? 設置不能訪問的 IP:
????????(1):不允許某個特定 IP 訪問,示例如下:
# 不允許 192.168.1.1 訪問
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" reject'# 重新加載防火墻
firewall-cmd --reload
???????? (2):不允許訪問的 IP 段,示例如下:
# 不允許 192.168.1.0 - 192.168.1.254 訪問
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject'# 重新加載防火墻
firewall-cmd --reload
? ? ?三:總結
? ? ? ? 以上為常見的設置服務內網訪問的方法。可以通過 nginx 配置或者防火墻設置。通過 nginx 實現修改 nginx.conf 配置文件即可。通過防火墻實現,在 Centos 6 及以前版本使用 iptables 作為防火墻,在 Centos 7 版本及以后使用 firewall 作為防火墻。可以設置允許某個 IP 訪問、允許某個 IP 段(如 192.168.1.0/24 即表示 192.168.1.0 - 192.168.1.254)訪問、設置不允許某個 IP 訪問、不允許某個 IP 段訪問。如果需要根據 URL 路徑實現精準的訪問控制,推薦使用 nginx。如果是網絡層對訪問 IP 或端口的限制,推薦使用防火墻。