設定Telegram存取通知
PortGuard Server 可以在有效的 SPA 封包添加一個後發送 Telegram 訊息 防火墙规则。通知包括伺服器主機名稱、允許的來源 IP、 資料包來源IP、SPA用戶名、請求存取、開放時間、過期時間 时间和超时。
1.創建一個Telegram機器人
- 開啟Telegram中的@BotFather。
2.發送
/newbot並依照指示操作。 3.複製BotFather回傳的Bot Token。看起來像123456789:AAExampleToken。
將 Bot Token 視為密碼。不要將其提交到原始碼管理,並貼上它 進入支援訊息,或在螢幕截圖中公開。
2.找到目的地Chat ID
對於私人聊天,請打開新機器人,選擇“開始”,然後向其發送訊息。 對於群組,將機器人新增至群組並發送訊息或命令以指示機器人 可以收到。
在伺服器上,輸入 Bot Token 而不將其保存在 shell 歷史記錄中:
read -rsp 'Telegram Bot Token: ' TG_TOKEN; echo
閱讀機器人的最新更新:
curl --config - <<EOF
silent
show-error
fail
url = "https://api.telegram.org/bot${TG_TOKEN}/getUpdates"
EOF
unset TG_TOKEN
在 JSON 回應中尋找 message.chat.id。私有 Chat ID 通常是
正數。組 Chat ID 通常為負,超組 ID 通常為負
以 -100 開頭。
如果 result 為空,則向機器人發送另一個訊息並再次執行請求。
對於頻道,將機器人加入頻道後可以使用 @channel_username
具有發布訊息權限的管理員。
3.配置PortGuard Server
以 root 身分啟動防火牆控制台:
sudo portguard-fwknopd --fw-console
選擇5. Configure Telegram notifications,然後輸入:
- 機器人代幣: BotFather 提供的代幣。
- Chat ID: 數位私有/群組 ID 或
@channel_username。 - 最小通知間隔:
0每發送一次通知 成功敲门。較大的值會抑制期間的額外通知 那么多秒。
確認配置並在要求發送測試時選擇 y
通知。控制台將設定儲存在 /etc/fwknop/fwknopd.conf 中
模式為 600 並重新載入正在執行的守護程式。
4.手動配置
相同的設定可以直接加入到/etc/fwknop/fwknopd.conf:
PORTGUARD_TG_BOT_TOKEN 123456789:replace_with_bot_token;
PORTGUARD_TG_CHAT_ID -1001234567890;
PORTGUARD_TG_NOTIFY_INTERVAL 0;
Bot Token 和 Chat ID 都是必備的。保护配置和 手動更改後重新啟動服務:
sudo chmod 600 /etc/fwknop/fwknopd.conf
sudo portguard-fwknopd --exit-parse-config \
-c /etc/fwknop/fwknopd.conf \
-a /etc/fwknop/access.conf
sudo systemctl restart fwknopd
5. 验证通知
從 PortGuard Client 傳送有效的 SPA 資料包時,請遵循守護程式日誌:
sudo journalctl -u fwknopd -f
僅當 SPA 封包被接受且防火牆通過後,通知才會排隊 規則添加成功。重複敲門,而同樣的規則仍然存在 活動的可能不會建立另一個規則。等待之前的規則過期 再次測試。
如果控制台測試失敗或接受的敲擊未發送訊息,請檢查:
- 伺服器可以解析
api.telegram.org並建立出站 HTTPS 連線。 - 私人聊天已開始,或機器人有權限在 目标组或频道。
- Chat ID 屬於與
getUpdates使用的相同機器人對話。 PORTGUARD_TG_NOTIFY_INTERVAL未抑制通知。fwknopd在手動設定變更後重新載入或重新啟動。
6. 禁用通知
再次運行控制台,選擇選項 5,輸入 disable 作為 Bot Token,然後
確認。 PortGuard 刪除所有三個 Telegram 設定並重新載入守護程式。