希格工作室

2023年11月21日 星期二

在Azure上快速建立VPN Server

 

  1. 登入Azure,選新增虛擬機器,區域選日本(Japan East),影像(Image)不用改直接是Ubuntu 20.04,大小(Size)的話單純逛網頁看幾隻YT應該預設的B1s應該還夠用,其他都不用改選省錢的方案,直接建立。
  2. 用mRemoteNG或其他SSH工具連線上虛擬機器
  3. 把這個網頁(https://slashview.com/archive2021/20210602.html)的步驟從頭跑到尾。
    1. sudo -i
    2. apt-get update
    3. wget https://git.io/vpnsetup -O vpn.sh
    4. nano vpn.sh
    5. 編輯之處為下列這三個變數,請自己輸入自己想要的參數並儲存。
      1. YOUR_IPSEC_PSK='請輸入20碼隨機英數符號混合字元'
      2.  YOUR_USERNAME='VPN帳號' 
      3. YOUR_PASSWORD='VPN密碼'
    6. Ctrl + S 存檔,Ctrl + X 離開 nano畫面
    7. sudo sh vpn.sh
    8. sudo ikev2.sh --auto
    9. 完成
  4. 在Azure 網路(VNet)上設定防火牆,開放UDP 500和4500;腳本無自動建立防火牆的情況下,直接在NSG開啟「輸出安全性規則」亦可。
  5. 設定本機Windows VPN連線
    • VPN類型:「L2TP/IPsec(使用預設共用金鑰)
    • 網路和共用中心>變更介面卡設定 > 安全性 > 允許這些通訊協定 > Challenge Handshake驗證通訊協定(CHAP)
    • 如果無法連線,增加Regedit設定後重新開機:

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

 

如果有任何錯誤無法排除參考:

https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md#windows-%E9%94%99%E8%AF%AF-809

 

原始操作手冊:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/README-zh.md

 

其他已知問題:不知道怎建立IPv6的連線XD,所以如果本機有允許IPv6時,最好去區網的介面卡停用IPv6,不然IPv6的部分還是會走到台灣IP



其他方式參考資料:

https://github.com/haoel/haoel.github.io

https://github.com/jim60105/docker-V2Ray

https://blog.ujoj.cc/post/cloudflare-tunnel/

2023年8月28日 星期一

UnitTest 比喻與簡易表達

有人問,剛好寫了一個自我感覺良好的回答,所以記錄起來 


如果你有個1+1=2的邏輯
你直接去找db
 
declare @a int = (select 1);
declare @b int = (select 1);
declare @c int= @a + @b ;
return @c



然後你包個method叫做「一加一」
雖然運作很順暢,但基本上就是無法對這個邏輯在程式端做單元測試
因為你依賴的一個不確定的外部因素「資料庫」和「網路」和「你養的貓踢到線」
等問題


所以這個邏輯寫法要改成

取得A(){
var a = db("select 1");
return a;
}
取得B(){
var b = db("select 1");
return b;
}
進行一加一的服務(){
var a = A();
var b = B();
var c = a + b;
return c;
}


這時候到單元測試的專案那邊時候
A和B就是你需要仿造的對象
所以在單元測試這邊改寫成

取得A(){
var a = 1;
return a;
}
取得B(){
var b = 1;
return b;
}



這樣你就可以單純測試「進行一加一的服務()」,而不用擔心因為「你養的貓踢到線」導致測試產生誤差

var c =進行一加一的服務();
test(c == 2);


2020年12月14日 星期一

.Net Core 各版本並存測試

 自問:



自答:









移除指令眉角:

--all後面還是要接要移除哪一種東西,Runtime就要打--runtime、 Hosting Bundle就要打上--hosting-bundle


顯示目前已安裝且可移除的版本

dotnet-core-uninstall list


移除所有runtime版本

dotnet-core-uninstall remove --all --runtime -y

移除除指定版本以外所有的runtime

dotnet-core-uninstall remove --all-but 3.1.10 --runtime -y


移除所有Hosting Bundle版本

dotnet-core-uninstall remove --all --hosting-bundle -y

移除除指定版本以外所有的Hosting Bundle

dotnet-core-uninstall remove --all-but 3.1.10 --hosting-bundle -y



總結:

.Net Core各版本理論上並存在服務器上沒什麼問題

只是如果要移除其他版本時就要注意

如果環境是IIS,且使用的是Hosting Bundle版本進行的安裝





移除時,不可以移除到Hosting Bundle

否則雖然--info還是看得到3.1存在,但是3.1也會不能運作

需要重新安裝Hosting Bundle進行修復才會恢復正常





.Net Core移除工具:https://docs.microsoft.com/zh-tw/dotnet/core/additional-tools/uninstall-tool?tabs=windows