前段幾天寫的,自用。 想著也許有和我一樣需求的同學,所以開源發出來了。
提供阿里雲的DDNS設定,支援多網路卡多域名繫結。
特性
- 支援阿里雲DDNS設定
- 支援針對多個線路多個網路卡單獨設定域名
- 支援IPv4,IPv6
- 支援Docker
說明
每次執行時,會列印本地介面卡資訊,推薦根據網路卡名繫結域名
必須在阿里雲後臺建立域名,記錄值
填寫什麼無所謂。
阿里雲AccessKey開通:https://help.aliyun.com/document_detail/38738.html
必要許可權:UpdateDomainRecord,DescribeDomainRecords
node版本>=16
多網路卡有什麼用, 一些裝置有可能接入多條線路,如:電信、聯通、移動、海外線等,對每條線提供一個獨立的域名很有必要~。
安裝方式
npm i -g ddns-ali
命令執行方式
引數之間只能有一個空格, 如果是win環境需要在powershell中執行。
網路卡檢視命令 ifconfig
,一般為en0,en1等,選擇有本地IP,如192.168.xx.xx的的進行繫結
多網路卡繫結多域名方式:
ddns-ali -e true -AccessKey 123 -AccessKeySecret 123 -Domain 'eth0ð0.xxx.com,eth1ð1.xxx.com'
單域名方式
不指定網路卡,會根據你當前的外網IP動態繫結,如果支援IPv6,會優先繫結
ddns-ali -e true -AccessKey 123 -AccessKeySecret 123 -Domain 'eth0.xxx.com'
指定IPv6方式
ddns-ali -e true -ip 6 -AccessKey 123 -AccessKeySecret 123 -Domain '網路卡名ð0.xxx.com'
程式引入方式
import { IConfig, mian, logConfig, getArgv, getDomain, log } from 'ddns-ali';
// logConfig.debug = true;// 是否輸出日誌資訊
async function init(){
const config = {} as IConfig;
config.AccessKey = getArgv('AccessKey') as string;
config.AccessKeySecret = getArgv('AccessKeySecret') as string;
config.IPVersion = getArgv('ip') as any || '4';
config.DomainObj = getDomain(getArgv('Domain'));
config.Domain = config.DomainObj.domain;
config.Ethernets = config.DomainObj.ethernet;
const r = await mian(config);
if(r) {
log('---成功---');
}else{
log('---失敗---');
}
}
引數
- -e
true或false
true是命令列執行 - -Domain
'網路卡名1&域名1,網路卡名2&域名2'
, 網路卡名與域名通過‘&’進行連線,多個域名使用','分割 - -ip
4或6
指定要繫結的的ip型別
定時執行
程式不包含定時執行,現在各種系統都有定時任務。沒必要在多此一舉。節省系統資源。
- 編寫一個run.sh命令檔案
#!/bin/bash
ddns-ali -e true -AccessKey 123 -AccessKeySecret 123 -Domain 'eth0ð0.xxx.com,eth1ð1.xxx.com'
# read
- win
計劃任務中
新增run.sh
,mac/linux 可以在crontab
中新增run.sh