OPNsense 安裝 wireguard site to site

原本想簡單用linux安裝wireguard 來達到site to site vpn , 無奈搞不定 , 只能依靠OPNsense幫忙了.

OPNsense 幾乎與pfSense 齊名, 是款開源免費,以及補漏洞快速的防火牆軟體, 評估後,我用OPNsense有三個理由:

  1. 介面簡單,更直覺, 滿像防火牆該有的樣子
  2. 哥是來找支援wireguard的系統, OPNsen阿莎力說有. 而pfSense一下子說有, 一下子又沒有,哥就不愛用了.
  3. 真. wireguard site to site
  4. windows簽入vpn, 可以一次連線多個site , 非常方便, 至少給麻瓜用, 不用挑戰麻瓜的邏輯思考, 一鍵多處簽入

目前還需要wireguard改善的:

  • 動態簽入vpn,
    目前用wireguard windows連線, tunnel ip居然無法自動取得, 那腳本就不能一份多用

 

情境 site to site vpn

Site A 
對外IP: 192.168.1.1  ,  udp port: 65536
內網:  10.192.130.15/24
Wireguard Tunnel ip :  10.1.0.1/24 

Site B
對外IP: 192.168.2.1  ,  udp port: 65536
內網:  191.1.0.0/24
Wireguard Tunnel ip :  10.1.0.2/24

安裝步驟:

  • 安裝外掛程式
    登入OPNsense , System -> Firmware -> Plugins 選擇安裝 os-wireguard-go
安裝完畢,網頁重新整理, 會出現WireGuard選項
  • 啟用WireGuard VPN

 

  • 新增Local
    設定 Name , Listen Port , tunnel ip . 裡面的 public key , private key 先不用輸入,等新增後會自動出現
按下"+" 準備新增
按下 "Save" 新增Local完畢
public key 與private key會自動產生, public key 需要複製下來,提供給對方服務器使用

  

  • 新增Endpoints
    這部分的資訊為對方服務器資訊, 以我們是Site A來說, 要輸入 Site B相關資訊
按下"+"準備新增

 

  • 綁定Local與Endpoints
    我們回過頭來修改Local, 設定其與Endpoints綁定

 

  • 設定防火牆, 讓對方能存取我們的udp port

 

  • 設定對方內網網段,與tunnel 網段(可以跟多個site互聯) , 讓內網與tunnel ip 能通過wireguard 介面, 進而互相溝通

 

另外一邊服務器, 請務必也用OPNsense , 不要像我這樣走冤枉路, 一邊OPNsense, 一邊Linux, 或是docker, 作法同上步驟, 資料記得不可一模一樣, 每個服務器ip, udp port , public key, 都不一樣

 

完成後, 可以到 lobby 查看, Lobby->Dashboard->右下角wireguard-go

 

ps.
1. 上面有一步驟可以輸入preshared key (也可以不輸入) , 若要輸入, 需登入OPNsense , 輸入 wg genpsk 即可產生, 這個key要放到所有相連結的服務器, Endpoints裡面
2. 參考資料
https://www.thomas-krenn.com/en/wiki/OPNsense_WireGuard_VPN_Site-to-Site_configuration

wireguard 初體驗

我打算用OPNsense取代目前老舊的硬體防火牆(Fortigate 80C) , 後來透過OPNsense 外掛, 試了suricata, AdGuard Home, tailcale , wireguard , 總共花了我2周的時間, 對於VPN, site to site , point to site 也都玩了一輪.

其中對於VPN心得:

  1. Wireguard 網路品質比OpenVPN好一些
  2. site to site vpn , 以及 point to site vpn
    請用OPNsense , 作法請參考 https://www.thomas-krenn.com/en/wiki/OPNsense_WireGuard_VPN_Site-to-Site_configuration
  3. wireguard 基本上綁定一個udp port , 與openvpn一樣都只能靠這個udp port做事, 很容易中國被擋下來
  4. 要規避中國防火牆, 請用tailscale + headscale + udp2raw
  5. tailscale安裝完畢,預設使用者管控機制滿好用的,但是要付費才能商用, 若不花錢, 請將使用者管控改成 headscale , headscale可用docker安裝, 然後讓tailscale login server改成headscale即可.
  6. tailscale 做site to site 只能以NAT方式完成, 這會有問題, 以鼎新tiptop GP 5.1來說就無法回撥source ip 的6400 port ,算是假的site to site vpn , 就算官方宣稱加上 --snat-subnet-routes=false 可以辦到, 但我怎麼試都失敗, 網路上大部分也都不在意,看來tailscale使用群更專注在翻牆功能.

wireguard 設定檔簡單解釋如下, 檔案為/etc/wireguard/wg0.conf, 該設定檔可形成 site to site , 但我在Linux設定一直失敗, 只能用NAT方式,最後發現OPNsense才能做到真正的site to site 功能, 太怪了!

[Interface]

# Site A
# private key 
PrivateKey = CG0svjlK7NdZ3U0MdYQzBHx7adDi1p2UlhPFXdH4HHw=
# Site A Tunnel IP
Address = 10.1.0.1/32
ListenPort = 51820

[Peer]
# Site B public key ,  tunnel ip 10.1.0.2/32
PublicKey = Jkdn621+amuCV8Wj7YQLMydtE9GO5kpq+oZdK/17XAY=
# 允許Site B內網, 以及Site B的tunnel ip
AllowedIPs = 10.1.0.2/32,10.176.5.0/24
Endpoint = <Site B 對外ip>:51820
PersistentKeepalive = 25

[Peer]
# Site C public key , tunnel ip 10.1.0.3/32
PublicKey = VaVaSY6SkizEhexj9vSTkzKgaIo5MwMnulu6I/D+iAI=
# 允許Site C內網, 以及Site C的tunnel ip
AllowedIPs = 10.1.0.3/32,192.1.0.0/22
Endpoint = <Site B 對外ip>:51820
PersistentKeepalive = 25

一鍵修改chrome預設語系

chrome宣稱預設語系是英文, 但這是唬爛的, 我們公司越南廠電腦安裝完畢, 預設語系一律自動變成越南文, 這對於IT來說很煩, 要改個設定什麼的, 都是折磨.

爬了文, 可以做成reg檔案, 直接執行就能強制修改預設語系, 終於解決這問題了.

複製以下文字,存成xxx.reg檔案, 再點選匯入即可, 台灣請將en改成 zh-TW , 或是按此下載做好的註冊檔案.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Google]

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Google\Chrome]
"ApplicationLocaleValue"="en"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Google\Chrome\ForcedLanguages]
"1"="en"

這是強制修改語系, 不能改回去, 若想讓麻瓜能自己再改回去, 請把上面 ForceLanguages 拿掉.

原來我們無時無刻都被分析中 AdGuard Home

我安裝OPNsense防火牆時, 加裝了AdGuard Home 外掛 , AdGuardHome使用dns過濾方式, 來阻擋廣告ip, 我讓公司wifi dns 也導到AdGuardHome, 只要是廣告類的ip, 過濾後, 都會變成0.0.0.0 , 我們不會去訪問到廣告.
幾天後, 真的真的沒想到, 居然高達49% 被濾掉, 仔細一看, 這些ip, 絕大部份是統計,以及分析我們上網行為, 當然商業行為精準知道我們的需求很不錯, 可是拿來做壞的用途也是恐怖.

MaxMind 免費提供ip所在國家資訊

以資安角度, 24小時網路提供的服務, 風險極高. 若確認只在特定國家使用, 就可以使用MaxMind提供ip所在國家資訊, 限制其他國家ip連線,避免不必要的麻煩.

最近想用軟體防火牆來取代公司老舊的硬體防火牆, 我考察很久捨棄PFsense, 改用OPNsense. OPNSense提供簡單MaxMind整合, 可以讓我們進行ip國家使用限制, 非常方便.

我們得先到 https://www.maxmind.com/en/geolite2/signup 註冊帳號,

註冊完畢登入網站, 接下來產生license key
https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en

產生完license key之後, 就可以下載ip國家資料, 可以參考一下OPNsense提供的方式

https://docs.opnsense.org/manual/how-tos/maxmind_geo_ip.html

防火牆就可以自己定義國別, 進行限制工作

2017年寫了隻pdf上保護的java程式,現在整理開源釋出

2017年寫了隻pdf附加保護的java程式, 給公司文管人員使用, 程式可離線使用,讓指定目錄裡面的pdf檔案, 批次一鍵上保全, 後來隨著人員異動漸漸失傳.

直到最近, 公司有新人需要這功能, 原因是部門沒有購買或租用 acrobat pdf編輯功能程式, adobe reader又不能上保全, 更不敢線上使用免費上保全網站, 因此我這個老程式又可以重出江湖了, 也改成 java 11使用.

源碼程式在這 https://github.com/WilliamFromTW/InMethodProtectPDF

可執行檔在這 https://github.com/WilliamFromTW/InMethodProtectPDF/releases

程式為runnable jar檔案 , 可以跨平台執行, 後來使用lunch4j這隻程式, 可以轉成windows可執行檔,很方便.

Proxmox VE突然不能用網頁登入

好怪的狀況, 經查看原來是主機名稱無法解析出ip, 因此在/etc/hosts裡面加上該主機名稱, 再重開pveproxy就可以了

Feb 15 10:58:22 pve-pc1 pvecm[29227]: hostname lookup 'pve-pc1' failed - failed to get address info for: pve-pc1: No address associated

root@pve-pc1:~# vi /etc/hosts
root@pve-pc1:~# service pveproxy restart
root@pve-pc1:~#

備份軟體restic 進行forget時, 出現pack 錯誤

因為要減少備份snapshots數量, 因此執行forget + prune 瘦身指令

restic forget --keep-last 3 --prune -r <repository>

但是出現某某snapshots中有某些 pack missing 錯誤

some pack files are missing from the repository, getting their blobs from the repository index: [c3622b51e9c118521af211cd3a98f580f5902824b6b665e62d61061acedbe71d]

很慘, 於是只好找一下該 pack, 看看是哪些檔案不見

restic find --pack c3622b51e9c118521af211cd3a98f580f5902824b6b665e62d61061acedbe71d -r <repository>

最後終於找到某些snapshots遺失哪些檔案, 但依舊無法解決問題, 現主時只好忍痛直接將有問題的snapshots移除,等以後再研究解決方案

restic -r <repository>  forget <snapshot id>

2023/2/8 後續
--
儘管forget該snapshots, 以為成功了.
但是再次執行備份,還是出現這個pack missing錯誤.
於是爬文, 發現必須先刪除相關packs , 再重跑以下步驟:
restic rebuild-index
restic backup --force
restic prune

詳細處理方式請查看 https://feeding.cloud.geek.nz/posts/removing-corrupted-data-pack-restic-backup/ 或是我下載好該網頁內容


java 11 不支援java web start

公司電子表單為鼎新的easyflow GP版, 需安裝支援java web start版本的java, 但我寫程式, 電腦只安裝java11, 不支援java web start怎辦? 我們可以下載IcedTea-Web , 安裝後就可以屎用了.

javaws xxx.jnlp

若出現unsigned jar 問題, 可以找到jdk或是jre , 修改conf\security\java.security這個檔案(安全風險請自行評估), 跳過安全驗證.

jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024, DSA keySize < 1024

1 2 3 ... 65