發表文章

目前顯示的是 2月, 2023的文章

ubuntu Server 系統升級速記

 久久用一次的功能,打完就收工! 更新套件 sudo apt update sudo apt list --upgradable sudo apt upgrade 重開機 sudo reboot 移除舊檔案 sudo apt --purge autoremove 安裝更新管理工兩 sudo apt install update-manager-core 升級 sudo do-release-upgrade 完成升級後再次更新系統內的套件 更新伺服器的套件檔案清單。 sudo apt update 更新套件。 sudo apt -y dist-upgrade 清除更新時下載回來的檔案。 Sudo apt clean 清除更新後用不到的舊檔案 sudo apt autoremove --purge

建立 virtualbox 和 windows 之間同步資料夾

  之前使用 vagrant 的時侯,它有個很炫的功能,就是設定好密鑰之後,可以在 windows 上指定一個資料夾和 virtualbox 裏的資料夾同步,雖然要透過 ssh 多一層的設定,但是真的很方便,那時用 vagrant 還得折騰一番才能設好,原本就要在 virtualbox 和 windows 兩邊折騰了,想少一點折騰的功夫,去掉 vagrant 和 ssh 這些個中間層  工作環境:     Windows 10     virtualbox 6          ubuntu 22 server LTS  virtualbox 有提供一個共用資料夾的功能,把它設定好,就可以實現願望了  Windows 端:      virtualbox > ubuntu22 > 設定 > 共用資料夾 >         資料夾路徑:指定你在 Windows 裏要分享來同步的資料夾(例如:D:\share)         資料夾名稱:隨便給一個(例如:share),等一下給 ubuntu /etc/fstab 第1個變數用         唯讀:不勾(雙向同步不勾)         自動掛載:勾         掛載點:要放在 ubuntu 的掛載名字(例如:share)         設為永久:勾     > 確定  ubuntu 端:不需要先裝 VBoxGuestAdditions     sudo mkdir /media/share     sudo vim /etc/fstab 加入以下這一行     ...

使用 python 處理 excel 檔案的前置準備

 因為要處理 excel 檔案的內容,由於數量龐大,不想 ctrl C + ctrl V N 次,所以想要動用程式來處理,這次要用的是 python,雖然說是處理 excel ,其實拿到的檔案是 ods 的格式,所以還得做一些前置工作。  工作環境:     Windows 10     python     anaconda 建立一個名為 excel 的獨立 python 工作環境   conda create -n excel   cd excel 啟用名為 excel 的工作環境   conda activate excel 這個工作環境裏要安裝這些 python 套件   python -m pip install openpyxl   python -m pip install pyexcel pyexcel-ods pyexcel-ods3 pyexcel-odsr pyexcel-xlsx pyexcel-xlsxw   關閉現行的工作環境   conda deactivate 可以寫程式取用 ods/excel 了 收工!

VSCode 使用者模板一直把內容打在檔案名稱上

 在使用 Visual Studio Code(以下稱 VSC) 的時侯,常常會設定常用的模板以增加開發速度,只要填空關鍵字就好,只是怪在,想要的內容跑到檔案名稱上去了,就是不呈現在檔案的內容上,怎麼改,改 settings.json 也不是,改使用者模板(snippet)也不是  工作環境:     Windows 10     VSC         snippet  突然想到多給一行空白好了,結果就成了… coding *(*^%^*()^ 那一行不會再出現在檔案名稱上了     "Python File" : {         "prefix" : "pf" ,         "body" : [         "" ,         "# -*- coding: utf-8 -*-" ,         "" ,         "def main():" ,         "    pass" ,         "" ,         "" ,         "if __name__ == '__main__':" ,         "    main()"         ],         "description" : "Python file with default settings"     }       收工!

使用 vue.js 也引用 bootstrap 和 FontAwsome

 克服忘性用的筆記  工作環境:     Windows 10          Node 18               vue.js               bootstrap               FontAwsome 已經安裝 node 18 和 vue.js 想在開發時也使用 bootstrap 和 FontAwsome ,     npm install bootstrap  bootstrap 好像會用到所以還是裝了     npm install --save @popperjs/core  裝 FontAwsome     npm i --save @fortawesome/fontawesome-svg-core      npm i --save @fortawesome/free-solid-svg-icons  檢查 dependencies (package.json)看起來像醬子:   "dependencies" : {     "@fortawesome/fontawesome-svg-core" : "^6.3.0" ,     "@fortawesome/free-solid-svg-icons" : "^6.3.0" ,     "@fortawesome/vue-fontawesome" : "^3.0.0-5" ,     "@popperjs/core" : "^2.11.6" ,     "bootstrap" : "^5.3.0-alpha1" ,     "...

chatGPT 襲來

 寫程式原本是一項有點特別的能力,具備一定的門坎,現在它不是了,而且門坎低到只需要一個 google 帳號的程度,只要會下指令,還不是以前那種生冷的指令,而是透過對話的方式,就和平時和其他「人」說話一樣,只不過對象換成了 AI ,就有個神奇、真的是神奇的助手來完成寫程式這件事,現階段還免費幫你寫,如果不告訴你是和 AI 對話,你能察覺嗎?為什麼要免費開放 AI 給普羅大眾?  都說有人幫我寫程式就好了何必管那麼多?假以時日,程式設計師這工作,怕是時日無多,至少,這工作的內容和工作方式會被改變,變成一般人會用人工智慧助理就行,雖然說,寫程式本來就只是手段,至少需求還產生工作機會,現在乍看是利用這助理幫忙做事,整體來看卻好像在幫人工智慧集思廣議,舖天蓋地的新聞又像在幫人工智慧除錯,而且是以一整個網際網路的規模,再來,這個 AI 他會推測你的需求,而且推測準確,像是你在過程中提到了輸入檔案時要處理中文字碼的事情,他就自動幫你把所有輸出的字碼也處理好了,更不用說他會根據對話,自動產生適當的標題,可以想見的是失業的規模,只怕與一整個網際網路的規模相差不多。  總而言之潘朵拉的盒子已經打開,唯獨不知道剩多少時間,以及盒子裏最後剩下的是?       瞬間驚喜,卻不禁悲從中來

Windows 用戶端連線不同做法 site-to-site VPN 測試

 如果有多個不同的端點,通常會用相同的串接法,有時侯新的方式可以用了,就產生了過渡期,理想狀況是第一時間做整合,有更多的時侯,只是不想多折騰,開個便道湊和湊和…  工作環境:      site-to-site SSLVPN VPN     site-to-site wireguard VPN     Windows 10 用戶端  測試結果因為使用設備不同可能不同,這裏只是做個備忘錄  如果兩個 site-to-site 的資源都要能存取只能先連 SSLVPN 再連 wireguard VPN , 反過來操作是不行的,可能是由於 SSLVPN 的路由和防火牆的設置做得比較全面的關係,新的 wireguard VPN 因為測試 site-to-site 為主很多設定還沒有考慮進來   收工!

Ubuntu 設置 Wireguard

  開始想用 wireguard 的時侯,套件一開始就裝好了,一直找不到設定檔,而且試著開始用的時侯,發現怎麼顯示出來的介面和設定的不一樣,於是又開始了一陣胡搞瞎搞…  工作環境:      Ubuntu 22 server  LTS      wireguard 1  設定的方式大同小異,可以參考 這裏 、 這裏、 或是 這裏 ,設定檔的資料夾權限可能要注意一下:     mkdir -m 0700 /etc/wireguard/      cd /etc/wireguard/      umask 077      wg genkey | tee privatekey | wg pubkey > publicke y  看別人設定覺得好像不難,居然也能撞牆…  就在完成設定檔之後, start wireguard 發現 interface 的資訊和設定的不一樣,而且找不到地方可以改原始的設定,是的,系統裏找關鍵字 conf 和 wg 就只會找到自已剛才開的設定檔,其他的檔案看起來就是長得和自已剛才開的設定檔不像,那時忘了先重開機一下,可能就沒事了,千金難買早知道啊…畢竟是很少需要重開機的系統  為了讓 wireguard 可以「正確」的啟用,開始針對訊息和設定的落差,透過刪改既有的檔案的方式來「修正」「落差」,於是乎這個檔重建也不是,殺也不是,unmask 也不行, wireguard 就是無法啟用  Failed to enable unit: Unit file /lib/systemd/system/wg-quick@.service is masked  原本設定檔裏想要透過 `cat privatekey` 來引用私鑰也是不行地…乖乖地把私鑰貼上設定檔了  如果可以很快地抓到問題所在,排除狀況,當然對症下藥,用修的;然而很多時侯,打掉重練看起來吃力,卻是最佳解, 重設設定吧,記得也要重開機   sudo dpkg-reconfigure wireguard ...

Mikrotik winbox refuse connection

  在整個 wireguard 的設定一陣忙祿之後,嘗試用 IPSec VPN 再次連回分享器,GG 了,好在這次只有一邊不能連,進去看 Log...  Log 說,用的是 IP Sec 連線,用的是 192.168.9.0 的網段,要連到 Winbox 被拒了  工作環境:   Mikrotik   Windows VPN 連線    winbox  相比2個端點的 firewall 發現有一點點不同,簡單,調成一樣就行,然後還是 GG…  後來看到2個端點的 service 設定不太一樣,原來是 IPSec 的網段沒有在允許的範圍內,於是把小門打開(winbox service 的 Address: 加入 IPSec 的網段 192.168.9.0/24),winbox 應聲打開 收工!

Mikrotik DNS Server 提供內部使用的名稱伺服器

 網域名稱對於使用者是蠻重要的服務,它雖然不貴一年400台幣左右,但是方便性無價,使用者絕對不會想去知道它的 IP ,他只想要他想找那台機器的時侯,提供你一個名字,然後你能幫他找到,那台機器在哪裏,所以就需要 DNS Server(以下稱DNS) ,也就是名稱伺服器,用來提供名稱和 IP 的對應,方便人機溝通  工作環境:   Mikrotik router    DNS Server for internal clients   Windows clients  Mikrotik 提供靜態名稱伺服器供使用者使用,在 IP > DNS > DNS settings: > Servers: 把內網的 Gateway(以下稱gw)的 IP 打上(例如: 192.168.0.1) > Allow Remote Request 勾起來 > Apply > OK ,這樣 DNS 就設好了  如果你要設定名稱對應,例如:192.168.0.2 名稱要叫使 notebook.router.lan 的話,在 IP > DNS > DNS settings: > Static > + > name: notebook.router.lan > Type: A > TTL: 1d > Address: 192.168.0.2 > Apply > OK ,有很多個就加很多次  如果你提供了 DHCP Server(以下簡稱 DHCP)讓使用者可以自動取得 IP 的話,記得到 IP > DHCP Server > Networks > 把對應的 Servers 填上去以便使用者自動取得 IP 時也使用你指定的 DNS  記得,那個 Allow Remote Request 勾起來,Allow Remote Request 勾起來,Allow Remote Request 勾起來,不然查找 DNS 的時侯,會一直 request timed out      收工!

Mikrotik firewall 開洞給 wireguard 鑽

 為了把不必要的門關起來,把 input drop all 的政策開起來之後,原本可以連線的 Wireguard 連不上了…  還好現在在設備旁  工作環境:   Mikrotik CCR site-to-site wireguard hapAC, CCR ip firewall filter +default drop input all   Wireguard windows peer   CCR 的 input filter 相對於 hapAC 在 wireguard 的路由管理應用在 firewall 好像是比較嚴格,其他設定一樣的狀況下,在開啟 input drop all 之後, wireguard 連接 hapAC 還是可以存取資源,但是連接 CCR 就馬上被關在門外,想必是得開小門… 操作:  wireguard 連遠端 site (hapAC)無法連回 CCR ,wireguard 連近端 site(CCR)無法通  在 CCR 實體線路把對方的內網 gateway 打開: /ip firewall filter add action=accept chain=input src-address=192.168.2.1  wireguard 連遠端 site (hapAC)可以連回 CCR ,wireguard 連近端 site(CCR)無法通  再把 wireguard 的網段打開: /ip firewall filter add action=accept chain=input src-address=10.10.10.0/30  wireguard 連近端也可以通了   收工!

wireguard 連到 site-to-site VPN 時同時存取兩個 site 下的資源

  連到 VPN Server 就是為了要存取內部網段的資源,如果2個 VPN server 用 site-to-site 的方式連好了,想說就能同時存取兩邊的資源,但是…  工作環境:   2 Mikrotik router with site-to-site wireguard    peer(road-warroir) link one of 2 peers above 不管連接任何一個剛設好的點(peer) 都只能看到一邊的資源(例如:nas),最簡單的解法可以參考之前同時連接多點的方式,就收工了! 只是我們都期待一個更美好的世界…,因為都是自家的設備、資源,所以想要不管連那個點都能看到所有的設備,這種方式有好有壞,好處就是一鍋端,壞處就是有別人進來也是一鍋端,安全的事留給大神,居家自用只管方便就好 還記得 設定 wireguard Server 的時侯有兩種方式可以讓使用者獲得存取權限嗎?要用 firewall的方式:  /ip firewall filter add action=accept chain=input comment="allow WireGuard" dst-port=12345 \ protocol=udp 之後再把 wireguard 的連進來的網段(192.168.0.0/24)加到 firewall NAT 到自已的 gateway 的網址: /ip firewall nat add action=src-nat chain=srcnat src-address=192.168.0.0/24 to-addresses=192.168.1.1    如此一來,不管是用 Wireguard 連接哪個 site-to-site 的點,或是兩點都連,都能存取2個點的資源    收工!

Mikrotik site-to-site wireguard config 用 wireguard VPN 連接2個不同的分享器資源

  利用 VPN 來連接不同的網際網路上的節點實務上蠻常見的,如果你剛好在不同的房間裏,各自用分享器接到小烏龜上撥接上網是不是很方便,然後,各自掛了nas在自已的分享器上用,還是很方便,如果,有那麼一天,你隔壁的朋友說要存資料來我的 nas 存,是不是就有點麻煩又不怎麼安全,話說有網路用網路沒網路才走馬路…  工作環境:  中華電信小烏龜  2台分享器(Mikrotik)各自已經設好可以上網      各自接好了自已的nas在分享器下  使用 winbox / webfig 設定 :wireguard 的設定方式都是一樣的,請對方設好給你的 ip 位址,請對方提供你公鑰,然後就把這些資訊填好就可以連了,不管對方是一個site還是一個節點,連線位址在 Quick Set 右下角有個 )*^&*()*&^&*( .sn.mynetname.net 就是了,就不用煩惱ip是會變的, 可以參考這裏  site-to-site 要多設路由的部份(2個分享器都要設): IP > Routes > Dst. address: 對方(開放的)內網網段(eg:192.168.0.0/24) / gateway: 對方的 wireguard 的 IP(eg: 10.10.10.1/30) > Apply > OK  設好之後,就可以看到對方的網段之內的設備了,不用馬路也可以連來連去了。 收工!

Wireguard connecting multiple peers 一次連接多個節點

因為有2個點想要同時連接,從連線程式發現原本的連接設定是分別設定的,所以只能一次取得一個 Peer 之中的資源 ,如果想要同時連接的話,要修改一下。 工作環境:  Mikrotik routerOS 7.*  Windows wireguard 設定範例如下: [Interface] PrivateKey = removed Address = 192.168.0.11/32 [Peer] PublicKey = removed AllowedIPs = 192.168.1.0/24, 10.0.0.0/24, 192.168.0.0/24 Endpoint = 1.2.3.4:12345 PersistentKeepalive = 25 [Peer] PublicKey = removed AllowedIPs = 192.168.1.0/24, 10.0.0.0/24, 192.168.0.0/24 Endpoint = 2.3.4.5:23456 PersistentKeepalive = 25 如此便能一次連接2個節點,也能同時取得2個節點下的資源了。   收工!  ===================== 後記 ===================== wireguard server 的 ip 不能一樣,不然一次只能連一個點,如果 server IP 不一樣可以同時開兩個 p2p 的連接,不用再設定第3個連接設定檔把 Peer 設定合在一起

Mikrotik 看 MOD 的設定方式

種花電信說: MOD 一定要直接接小烏龜才能看 ,偏偏有些分享器可以接到指定 port 就能看 MOD,所以自家的 Mikrotik 在使用 Quick Set 建立連線之後,想要把 MOD 接到 Mikrotik 之下看,當然,不透過 Mikrotik ,MOD 直接接在小烏龜上,不用另外設定分享器就能看 XD,那究竟是在窮忙什麼? QQ 工作環境:  Mikrotik ROS v7.7   Quick Set 已經完成,可以上網    將 MOD 放到 eth4 介面連接 有蠻多網頁在討論這個如何達成這個目的,畢竟很多入門的分享器根本不用設定,例如T牌只要把 mod 的線路插在最後一個實體 port 就行,網路上有很大部份的資訊是設定 vlan 來完成實作,由於利用 Quick Set 完成設定的環境未動用到 VLAN ,環境相對上單純,這次以不使用 VLAN 的方式來實做,而用新增橋接的方式來完成,主要是參考 這個文章 ,參照文章的做法最主要要注意的地方在於第7版的介面是沒有 master Port 可以調整的,所幸只要略過那個動作就好 設定方式:簡單說就是新增一個橋接(bridgeHinet),然後把 gateway 的介面(eth1)和指定的介面(eth4)綁到新增的橋接上,並且設定撥接(pppoe)指到這個橋接上,實作方式如下 使用 Winbox / Webfig Bridge / Bridge / + / bridgeHinet 勾選 IGMP Snoop / Apply / OK Bridge / Ports / eth4 / Bridge: 選剛才建立的 bridgeHinet / Apply / OK Bridge / Ports / + / interface: eth1; bridge: bridgeHinet / Apply / OK Interfaces / Interface / pppoe-out1 / interfaces: bridgeHinet / Apply / OK 設定好了以後,把 MOD 的線插到 eth4 的介面上就可以連線了,測試一下,原本可以連到網路的部份功能不變,MOD 接在 Mikrotik 路由器上也可以看了 收工!

Mikrotik wireguard server 設定範例

Wireguard 做為 VPN 概念上十份直覺,設定也是,交換一下金鑰就可以相連接,雖然比起 Quick Set 的 VPN access 來說要再多設定一下,仍然是個不錯的解決方案,既然 Mikrotik ROS 第7版起已經支援,立馬來試一下。  工作環境:  Server: Mikrotik ROS 7 Hap Ac router  Client: Windows 設定  #wireguard 出門在外連線用 #新增 wireguard 介面(interface) /interface wireguard add listen-port=12345 mtu=1420 name=wireguard1 /ip address add address=192.168.0.1/24 interface=wireguard1 network=192.168.0.0 #新增連入的 peer 設定用戶端(client)時要用這個的 ip ,persistent-keepalive 非必設 /interface wireguard peers add allowed-address=192.168.0.3/32 interface=wireguard1 \ persistent-keepalive=10s public-key=\ "ljdalsfjlasdflksdjflkJLSFDJlUJALDSAJflfjsdfd=" " #讓 Client 端連進來,以下2 個選1個 /interface list member add interface=wireguard1 list=LAN /ip firewall filter add action=accept chain=input comment="allow WireGuard" dst-port=12345 \ protocol=udp  然後去 wireguard 下載 windows 版的連線程式, 把 client 端設定好 ,就可以連回家了。    收工!