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

pfSense的OpenVPN改用google authenticator

前陣子公司強化vpn登入方式, 密碼改用谷歌驗證器(google authenticator)驗證密碼,
原本覺得pfSense上設定實在太簡單了, 就懶得記錄下來, 不過想想還是截一下圖,做個紀錄.

  • 安裝FreeRADIUS
System > Package Manager > Available Packages 
搜尋FreeRADIUS並且安裝
  • 新增interface 127.0.0.1 監聽1812 , 1813
    RADIUS兩功能: Autentication(port 1812)與Accouting(port 1813)
    1812:Access-Request (驗證用)
    1813:Counting-Request (Accouting 記錄使用者連線期間)
Services > FreeRADIUS > Interfaces > Add
  • 新增 NAS/Client
Services > FreeRADIUS > NAS/Clients > Add
  • 新增pfsense 認證server
System > User Manager > Authentication Servers > Add
  • 設定原本OpenVPN改用FreeRADIUS認證
VPN > OpenVPN > Servers > Edit
  • 設定大功告成,
    接下來只要新增使用者, 並且產生QR Code , 讓使用者透過下載的google authenticator產生的的密碼幾可登入vpn
Services > FreeRADIUS > Users > Add

以下為官方寫的文件非常詳細, 建議參考官方的

https://devopstales.github.io/linux/pfsense-2fa/

pfsense的openvpn用戶端設定檔案如何移除

pfsense設定openvpn非常方便, 也有package能協助匯出windows用戶端安裝程式 , 再給使用者無腦安裝, 可以省下IT很多時間.

但是若使用者想要刪除設定檔案, 打開openvpn gui預設的資料夾,卻找不到設定檔案, 就無法刪除設定檔案.

查了一下設定檔案profile的位置, 總共有兩個地方.
1. openvpn gui預設的
%USERPROFILE%/OpenVPN/config

2.program file裡面
%ProgramFiles%/OpenVPN/config

pfsense用戶端安裝的時候, 設定檔案卻放在 ProgramFiles 裡面, 超怪的, 就算是新版pfsense 2.5.1 也跟2.4.5p1一樣沒變, 此時只要到正確的目錄, 刪除相關檔案,重啟常駐的openvpn gui 就可以了

pfsense設定openvpn單點連線(remote access)注意事項

安裝方式可參考 https://docs.netgate.com/pfsense/en/latest/vpn/openvpn/openvpn-remote-access-server.html

安裝時注意事項如下:

1. servers 設定需要注意的
   server mode : remote access(ssl/tls+User Auth)
   local port : 預設1194 (建議不要用1194,容易被擋)
   tunnel network:  10.0.8.0/24 (可自己調整,但遠端的路由要記得設定走回來,不然會迷路)
   IPv4 Local network(s): x.x.x.x/24 (serve本身內部網段)
   Dynamic IP: 打勾
   DNS server enable: 打勾(若要翻牆的話)
   DNS server1, DNS server2 (若要翻牆就要設定)
   custom options: redirect-gateway def1(若要翻牆就要設定)
2. 請使用openvpn wizard幫我們自動設定remote access, 會方便許多
   在System->Certificate Manager>CAs會出現FreeRADIUS CA
3. System->User Manager
   新增使用者後, 還要編輯該使用者,新增一個User Certificates
   新增時可在Common Name輸入server對外網址
4. System->Package Manager->available packages
   安裝協助匯出憑證的外掛程式
   openvpn-client-export
   安裝後vpn->openvpn->client export 就能匯出使用者憑證
5. (2021/05/23)新版2.5.x 設定的時候, 要注意與2.4.x版本的壓縮設定不太一樣, 若壓縮的方式沒搞定(我是選擇lzo lagacy, 或是no compress , retain compression package ...) 不然vpn會失敗的
6. remote server那邊的local network router記得要把丟往tunnel network的封包, 設定由pfsense lan ip走過去哦, 例如往 tunnel 10.0.8.0/24 gateway 為 10.192.130.213(pfsense lan ip)

pfsense設定OpenVPN (site to site一邊固定ip即可)

1.下載 pfsense 軟體防火牆套件
  https://www.pfsense.org/
2.安裝pfsense(server端)(假設內部網段是10.192.130.0/24)
  至少要有兩個網卡,一個要有固定ip, 另一個是內部網路(假設是10.192.130.212)
  2.1 安裝很簡單, 重點在於搞定兩個網卡ip,搞定後就能用使用瀏覽器,經由內部網路ip, 連上pfsense
  2.2 連上pfsense後, 取消硬體checksum
      System->Advanced->Networking
      Hardware Checksum offloading選項打勾(這部分我浪費三天三夜, 若沒打勾會嚴重影響效能)
  2.3 連上pfsense後, 啟用CPU硬體加密功能
      System->Advanced->Miscellaneous
      Cryptographic Hardware 選擇AES-NI CPU-based Acceleration
      這部分比較特別,若pfsense裝在promox ve上, vm要記得開啟AES-NI功能, esxi好像預設就開啟
      ps. 這時候建議pfsense重開一下
  2.4 安裝openvpn(server)
      VPN->OpenVPN->Servers
      新增OpenVPN Servers , 需要輸入的地方如下,其他都是預設
      (1) Server Mode 選 Peer to Peer(Shared Key)
      (2) local port 預設是1194請改成其他減少被擋或被駭的機率
      (3) Hardware Crypto 任選一種硬體加密(若可以選的話)
      (4) IPv4 Tunnel Network 輸入172.26.0.0/24
      (5) IPv4 Remote network(s) 輸入client端的內部網路 , 如192.1.0.0/24
      (6) Save
      (7) 重新看剛剛的設定,複製preshared key(Save之後才會產生),要複製到pfsense client端使用
  2.5 Firewall -> Rules 到 WAN 新增 any source 的規則, 到OpenVPN 也新增 any source的規則

3.安裝pfsense(client端)(假設內部網段是192.1.0.0/24)
  至少要有兩個網卡,兩個都是內部網路,同網段也ok
  3.1 安裝很簡單, 重點在於搞定兩個網卡ip,這兩個網卡ip可以同一個網段, 一個當WAN,一個當LAN(假設是192.1.0.3).
      搞定後就能用使用瀏覽器,經由內部網路ip, 連上pfsense
  3.2 同步驟2.2
  3.3 同步驟3.2
      ps. 這時候建議pfsense重開一下
  3.4 安裝openvpn(client)
      VPN->OpenVPN->Clients
      新增OpenVPN Clients , 需要輸入的地方如下,其他都是預設
      (1) Server Mode 選 Peer to Peer(Shared Key)
      (2) Interface 選 any
      (3) Server host or address 輸入server端對外的ip
      (4) server port 輸入server端設定port
      (5) Shared Key 請輸入server端複製的Shared Key
      (6) Hardware Crypto 任選一種硬體加密(若可以選的話)
      (7) IPv4 Tunnel Network 輸入172.26.0.0/24
      (8) IPv4 Remote network(s) 輸入server端內部網路 , 如10.192.130.0/24
      (6) Save
  3.5 Firewall -> Rules 到 WAN 新增 any source 的規則, 到OpenVPN 也新增 any source的規則

4.Status->OpenVPN 查看能不能連線成功
5.pfsense(server)
  新增路由,假設server所在內部網路gateway是10.192.130.1
  請在該gateway上新增目的地192.1.0.0/24,要經由10.192.130.212出去(依照以上例子) 
6.pfsense(client)
  新增路由,假設client所在內部網路gateway是192.1.0.1
  請在該gateway上新增目的地10.192.130.0/24,要經由192.1.0.3(依照以上例子)
—
Pfsense 2.4.5
William 20200422