發表文章

目前顯示的是 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 加入以下這一行          share     /media/share     vboxsf     _netdev,uid=1000,gid=1000     0     1     sudo init 6 (可以先試試 sudo mount -a 掛不上去再重開機)  重開機後測試一下: touch /media/share/test.txt 應該在 Windows D:\share 下可以看到多了一個 test.txt 的空白檔案,在 windows 裏打開這個檔案,加入 test 的字樣,在 ubuntu 裏面 cat /media/share/test.txt 應該會出現 test 的字樣,表示成功了   收工! 

使用 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" ,     "vue" : "^3.2.45"   },   引用套件(main.js)看起來像醬子: import 'bootstrap/dist/css/bootstrap.min.css' import "bootstrap" import { library } from '@fortawesome/fontawesome-svg-core'

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     收工!    =================== 後記 =================== 要改設定時,可能要先 stop service 再重開 service,client 也先斷線,以免出現怪怪的回應或是改不動設定的情形     sudo systemctl stop

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 端設定好 ,就可以連回家了。    收工!