以下是配置?frpc?連接內網 MySQL 服務的詳細步驟:
1. 準備工作
-
frps 服務器:已部署在公網 IP 1
1.117.11.245
,假設 frps 的默認端口為?7000
。 -
內網 MySQL 服務:運行在內網機器的?
3306
?端口。 -
目標:通過公網 IP 1
1.117.11.245
?的某個端口(如?3307
)訪問內網 MySQL。
2. 配置 frpc 客戶端
在內網機器上修改?frpc.ini
?文件,添加以下內容:
[common]
server_addr = 11.117.11.245 # frps 的公網 IP
server_port = 7000 # frps 的服務端口# 配置 MySQL 隧道
[mysql]
type = tcp # 使用 TCP 協議
local_ip = 127.0.0.1 # 內網 MySQL 的 IP(如果是本機則填 127.0.0.1)
local_port = 3306 # 內網 MySQL 的端口
remote_port = 3307 # 公網 IP 上暴露的端口(通過此端口訪問 MySQL)
3. 啟動 frpc 客戶端
在內網機器上運行:
frpc -c frpc.ini
輸出應包含?ProxyName [mysql] start success
,表示隧道建立成功。
4. 配置 MySQL 遠程訪問權限
確保內網 MySQL 允許外部連接:
-
登錄 MySQL:
mysql -u root -p
-
授權遠程訪問(替換?
your_password
?為實際密碼):CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
-
修改 MySQL 配置文件(如?
/etc/mysql/mysql.conf.d/mysqld.cnf
):bind-address = 0.0.0.0 # 允許所有 IP 連接
-
重啟 MySQL:
systemctl restart mysql
5. 開放防火墻端口
在?frps 服務器?上放行?3307
?端口:
# 使用 ufw(Ubuntu)
ufw allow 3307/tcp# 或使用 iptables(通用)
iptables -A INPUT -p tcp --dport 3307 -j ACCEPT
6. 測試連接
從外網通過公網 IP 和端口連接 MySQL:
mysql -h 11.117.11.245 -P 3307 -u remote_user -p
輸入密碼后,若成功登錄,說明配置完成。
7. 安全增強(可選)
-
限制訪問 IP:在 frps 服務器防火墻中,僅允許特定 IP 訪問?
3307
?端口。 -
啟用 frp 加密:
[common] tls_enable = true # 啟用 TLS 加密[mysql] type = tcp use_encryption = true # 數據加密 use_compression = true # 數據壓縮
故障排查
-
連接失敗:
-
檢查?
frpc
?日志是否有錯誤(如端口沖突或網絡不通)。 -
確認 MySQL 的?
bind-address
?已設置為?0.0.0.0
。 -
確保內網機器可以訪問 frps 的?
7000
?端口。
-
-
權限問題:
-
確保 MySQL 用戶?
remote_user@%
?已正確授權。 -
使用?
telnet 11.117.11.245 3307
?驗證端口是否開放。
-