資料庫一般不建議開啟外網地址,外網伺服器需要一臺內網伺服器作為中間伺服器實現從內網訪問資料庫。
除了防火牆外還有像 rinetd
三方軟體,配置簡單,但要考慮安全性。
總體思路是,中間伺服器開放一個埠如 9501
,只對外網伺服器開放,同時開啟 firewall
轉發 9501
請求到雲資料庫的 ip
和 port
。
第一步:如果雲伺服器未開啟防火牆,開啟後注意新增使用到的埠以免影響線上。相關常用命令附另一篇文章:
雲伺服器埠和防火牆埠配置
第二步:防火牆開放 9501
埠
firewall-cmd --add-port=9501/tcp --permanent
如果對來源 ip
有所限制(此處我未驗證)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="8.4.2.3" port protocol="tcp" port="9501" accept'
第三步: 將9501的請求轉發至10.5.5.5:3306
firewall-cmd --permanent --add-forward-port=port=9501:proto=tcp:toaddr=10.5.5.5:toport=3306
相關知識點
- 每步操作後,都需要
firewall-cmd --reload
才生效 --permanent
是永久firewall-cmd --list-all
檢視所有規則- 新增和移除是
--add-{key}={value}
--remove-{key}={value}
下方的{}
是為了說明實際是操作key-value
,實際是沒有的。
例如新增--add-{port}={9501/tcp}
--add-{forward-port}={port=9501:proto=tcp:toaddr=10.5.5.5:toport=3306}
刪除:--remove-{port}={9501/tcp}
--remove-{forward-port}={port=9501:proto=tcp:toaddr=10. 5.5.5:toport=3306}
同理,刪除rich rules
裡的項也是一樣,但注意value
中有空格,需要單引號包圍--remove-rich-rule='rule family="ipv4" source address="8.4.2.3" port protocol="tcp" port="9501" accept'
- 若不能轉發,可能需要將上圖中的
masquerade
設定為yes
,它的作用我沒有搞懂,僅供參考firewall-cmd --permanent --zone=public --add-masquerade
本作品採用《CC 協議》,轉載必須註明作者和本文連結