文章

raspberry pi zero 初始設定

Raspberry Pi Zero 初始設定 使用 2019-09-26-raspbian-buster-lite 的官方映像檔 預設帳密 帳號: pi 密碼: raspberry 初始設定 請輸入底下指令 會進入互動選項的環境,根據底下的順序設定 sudo raspi-config 設定時區 I2 Change Timezone Asia Taipei 設定WIFI國別 PS : 這個不設定不能使用WIFI I4 Change Wi-fi Country TW Taiwan 設定WIFI帳密 2 Network Options N2 Wi-fi 輸入WIFI的SSID 輸入WIFI密碼 設定鍵盤 Layout PS : 預設鍵盤Layout會是 UK PS : 這個設定完要重開 4 Localisation Options I3 Change Keyboard Layout Generic 104-Key PC US English (US) No AltGr Key Left Logo Key 啟動SSH 5 Interfacing Options P2 SSH YES 完成初始設定,會詢問是否重開,建議選是 重新安裝vi 原始的 vi 很難使用,建議重新安裝vim 第一次update要等一段時間 sudo apt update sudo apt-get remove --purge vi sudo apt-get install vim 其他設定 WIFI也可使用底下方式設定 sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 底下的設定為最低限度設定 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=TW network={         ssid="foo"         psk="1234567890123" } 重啟wpa連線工具 sudo wpa_...

markdown快速筆記

git的README.rd可以使用一個特殊的語法,稱為markdown 其用意是簡化書寫README的方法,而不用<H1><H1/>這樣的HTML語法書寫 線上markdown,可以用這個網站即時看到書寫的結果 https://stackedit.io/app# # Title # H1 ## H2 ### H3 # Title End # H1 # ## H2 # ### H3 # # 引用 > 一層引用 >> 二層引用 # 斜體 *AA* # 粗體 **AA** # 清單 * A * B * C # 縮排清單 * A   * B     * C # 序號 1. A 2. B 3. C # 程式碼 (前面加上四個空白)<br /> (與前一行要一個空行)<br />     function()         AA + BB         return A # 行內程式碼 AA `function()` BB # 分隔號 ↓ - - - ↑ # 超連結 [連結名稱](http://example.com "連結文字,移到連結上面產生的文字") # 參考形式的超連結 你可以使用[google][a]或是[yahoo][b]連到入口網站 [a]: http://www.google.cpm "Google網站" [b]: http://tw.yahoo.com "奇摩網站" # 圖片 ![Alt text](/path/to/img.jpg "Optional title") # 參考形式的圖片 ![Alt text][id] [id]: url/to/image  "Optional title attribute"

MySQL個人手札-Database

設定檔位置 ubuntu 16 18 mariadb 10.1.37 /etc/mysql/mariadb.conf.d/50-server.cnf mysql 8.0 /etc/mysql/conf.d/mysql.cnf centos7 mysql /etc/my.cnf 建立Database ( [ ] 中跨號代表可以有無 ) CREATE DATABASE [IF NOT EXISTS] db_name [ [DEFAULT] CHARACTER SET [=] charset_name ] [ [DEFAULT] COLLATE [=] collation_name ] IF NOT EXISTS - 如果Database不存在,就建立新的Database (如果沒有上面的指令,且Database已存在,mariaDB會報錯) [DEFAULT] CHARACTER SET - Database裡面的Table預設會使用的字集,也就是文字的二進位編碼 [DEFAULT] COLLATE - 儲存的文字的排序方法 (末碼為 ci 帶表不分大小寫,AaBbCcDdEe) (末碼為 cs 帶表區分大小寫,ABCDEabcde) (末碼為 bin 處理的單位事二進位) CHARACTER SET 建議用 utf8mb4,可以儲存emoji COLLATE 建議用 utf8mb4_bin 範例: CREATE DATABASE IF NOT EXISTS testDB DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin; 修改資料庫的CHARACTER和COLLATE ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin; 顯示全部Database SHOW DATABASES; 顯示DATABASE的CHARACTER和COLLATE SHOW CREATE DATABASE db_name; 顯示預設的資料庫ENGINE (現在都預設 INNODB) SHOW VARIABLES LIKE 'storage_engine'; 顯示全部支援的ENGINE 在support...

Fortigate link-monitor 類似 IP SLA

Fortigate也有類似Cisco IP SLA 的功能,叫做 link-monitor 以前Fortigate有GUI,後來只剩下CLI。 link-monitor,可以監控介面和Ping對方位置,如果Ping不到,會認定這條線路不能用而變更路由。 這個功能可以在不使用WAN Loadbalance的狀況下,使多條WAN可以做為備援。 與WAN Load Balance不同的是,WAN Load Balance是屬於 Active Active Mode,而link-monitor是 Active Passive Mode。 設定方法: config system link-monitor  #進到link-monitor設定模式   edit wan1                 #建立或修改link-monitor,名稱可以自行設定,建議與介面名相同     set srcintf wan1        #設定要被監控的介面,Ping封包會從這個介面出去     set gateway-ip 123.123.123.123 #Gateway位置,用來轉送Ping封包用     set server 168.95.1.1   #要Ping的位置,建議用對方的gateway     set source-ip 123.1.1.1 #Ping封包的來源IP,可以不設定,預設會用監控介面的IP     set protocol ping       #設定ping的方法,方法有http和ping     set interval 3          #兩次發送Ping封包的間隔,單位秒,預設 5     set timeout 1           #Ping封包的tie...

raspberryPI + strongswan 建立自己的VPN伺服器

紅色字 - 重要訊息,須多加注意 綠色字 - 指令 (裡面的指令無須在意工作目錄) (須使用root角色執行命令或再前面加上 sudo) 環境介紹 raspberry 3 B+,使用內建的WIFI連線,沒有使用實體網路線 raspberry的IP為 192.168.10.100 作業系統用raspbian,2018 12月 使用小米AP WAN的部分使用PPPOE LAN的部分設定為192.168.10.1 設定 UDP 500和UDP 4500兩個對應到raspberry (連接阜轉發,外對內NAT,DMZ,依照AP品牌名字不一樣) 使用的手機是小米note5 前置作業 建議先更新到最新,並且確定WIFI每次重開機IP都依樣且會自動連線 安裝相關軟體 apt-get install strongswan libcharon-extra-plugins libstrongswan-extra-plugins strongswan-ike strongswan-pki 建立VPN伺服器憑證 有兩種建立方法,兩種則ㄧ 1. 用 ipsec pki 工具 建立VPN伺服器憑證私鑰 ipsec pki --gen --type rsa --size 2048 --outform pem > /etc/ipsec.d/private/vpnHostKey.pem 建立VPN伺服器憑證公鑰 這邊一次建立10年 第五行的部分可以依照個人狀況修改 C=代表國家縮寫, O=組織名稱, OU=組織內的單位, CN=伺服器的FQDN名稱 下一行的san同CN ipsec pki --pub --in /etc/ipsec.d/private/vpnHostKey.pem --type rsa | \  ipsec pki --issue --lifetime 3650 \    --cacert /etc/ipsec.d/certs/strongswanCert.pem \    --cakey /etc/ipsec.d/private/strongswanKey.pem \    --dn "C=TW, O=YourCom...

Nginx server 和 location 優先順序

Nginx是一個輕量形的 WEB 伺服器,功能很強大。 其中 server 和 location 可以有很多種的設定方式,也因此需要有個機制去選擇出到底該用哪一個。 這篇文章會說明 Nginx 選擇 server 和 location 的方法。 Server 當設定檔中有多個 server (...) 區塊,Nginx會怎麼選擇呢? server的選擇相對比較簡單,在開始之前,要先了解Nginx怎麼編譯 Server 裡面的 listen 。 預設的 listen 通常是 : listen 80 default_server; 但是一個完整的描述方法因該是: listen IP:PORT; 而缺少的部分(不管是缺少IP還是Port號)Nginx會自動使用預設值補齊。 補齊的方式如下 缺少IP 如 listen 80;,Nginx會自動補0.0.0.0,變成 : listen 0.0.0.0:80; 缺少Port 如 listen 10.1.1.1;,Nginx會自動補80 Port號,變成 : listen 10.1.1.1:80; 兩個都缺 也就是沒有使用 listen ,nginx會自動補上 listen 0.0.0.0:80; 知道自動補齊的方法後,就可以開始討論選擇server的順序。 首先 Nginx會先檢查 IP:Port 的匹配。 選擇順序為 listen 有指定IP (如 10.1.1.1) listen 無指定或使用0.0.0.0 第二 比對 server_name 當第一個IP:Port匹配檢查完後,發現有多個符合的結果,才會繼續比對。 選擇順序為 1. 完整比對到server_name,如 server_name www.example.com; 2. server_name前面有 * 符號,如 server_name *.example.com; 3. server_name後面有 * 符號,如 server_name www.*; 4. server_name是正規表示法,如 server_name ~www.example[1-3].com; 5. 全部的server_name都不匹配,此時Nginx會使用 listen 後面有 defa...

linux文字修改大師-sed-01-基本介紹

圖片
會寫這篇文章,主要是為了自己可以記住龐大的sed功能。 章節的編排主要是依據功能性。 個人使用sed的主要原因是自動化修改設定檔。 目前看過最好的sed和awk中文教學網站大概是底下這個連結 http://wanggen.myweb.hinet.net/ach3/ach3.html 本篇文章主要是依照 GUN 的 sed所撰寫,連結為 https://www.gnu.org/software/sed/manual/sed.html 這邊提供一些線上的正規表示法網頁,可以即時知道自己寫的正規是否有匹配 https://regex101.com/ 裡面有很多範例可以直接複製使用 https://regexr.com/ 可使用replace功能, 方便驗證 command s 是否正確,裡面還有正規的符號參考 sed簡介 學習sed建議具備正規表示法的基礎,沒有此基礎也可學習。 GUN的sed簡介說到,sed是一種串流型態的文字編輯器 類似一個管道(pipe),特別的是,sed會在管道中間進行文字的取代、刪除、插入等功能。 input =======>output               filter sed的input可以是一個或多個檔案、stdin或前一個指令利用 | (pipe)傳到sed 目錄 sed基礎介紹 常用option address 除了某個條件以外,其它都符合 p指令 s指令 a、i、c、d指令 sed基礎介紹 sed的指令格式為 sed [option] "/address/ , /address/ command argument [flag] " [inputFile...] 從左到右介紹 [option] 第一個option是常見到的以 - 符號開頭的功能,如 -n、-r、-i,可省略 /address/ address有兩個,代表開始行數和結尾行數               只有一個代表指定的這行,都不輸入代表每行都會執行command      ...

Zabbix 可以用中文輸入

會看到這篇文章表示目前的資料庫字集不支援中文 如果之前是照官方方法設定,資料庫語系會是latin1 修改語系的方式目前找到的方法是: 1. 暫停Zabbix服務 (建議) 2. 修改資料庫的預設字集 (這一步其實可以不用) 3. 倒出資料庫的資料 (會等很久) 4. 複製一份備份出來的資料 (怕出現不可預期的錯誤) 5. 用sed指令修改資料庫內的table語系 6. 倒回資料庫 1. 暫停Zabbix服務 建議執行,可以加快備份速度 service zabbix-server stop 2. 修改資料庫的預設字集 先登入資料庫 mysql -uzabbix -p zabbix 輸入資料庫使用者 zabbix 的密碼,進到mysql指令介面 mysql> ALTER DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; mysql> quit; 3. 倒出資料庫的資料 這個動作依照資料庫大小大概在10分鐘倒30分鐘不等 mysqldump -uzabbix -p zabbix --skip-lock-tables > zabbix.tmp.sql 4. 複製一份備份出來的資料 cp zabbix.tmp.sql zabbix.tmp.sql.backup 5. 用sed指令修改資料庫內的table語系 sed -i 's/CHARSET=latin1/CHARSET=utf8\ COLLATE=utf8_bin/g' zabbix.tmp.sql 6. 倒回資料庫 cat zabbix.tmp.sql | sudo mysql -uzabbix -p zabbix 輸入資料庫使用者 zabbix 的密碼,開始恢復資料 7. 啟動Zabbix Server service zabbix-server start 到此已經可以在資料庫中輸入中文,如果要讓繪製的圖形也可以用中文要照底下的步驟進行 修改字型 預設的圖形字型不能顯示中文,因此需要修改字型 先到Windows的 "字型",找到微軟正黑體(建議),點兩下進去後找到...

Windows DC Error Code 5774, 5775, 5781

圖片
主要的DC重開機常會出現5774, 5775, 5781錯誤訊息 當DC把DNS指向自己的時候(Primary DNS) 在開機的過程中有可能netlogon服務會比DNS服務提早開啟 當這個狀況發生時,因為Netlogon要註冊資料到DNS內,因為DNS還沒啟動完成,因此造成5774, 5778, 5781的錯誤訊息 等待5分鐘後,NetLogon會再次向DNS註冊 如果不想看到這個錯誤訊息發生 可以修改註冊檔 regedit KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon 右邊的[DependOnService],點兩下新增DNS在最下面 出處 https://support.microsoft.com/zh-tw/help/259277/troubleshooting-netlogon-event-5774,-5775,-and-5781

IPv6的延伸標頭 Extended Header

圖片
IPv4 的時代要使用一些特殊的功能(如通知或控制)有兩種方式,1. IPv4 Option,2. ICMPv4 IPv4 Option 需要在IPv4標頭的最後面再加上各種 OPTION,這個動作會造成IPv4標頭長度不固定。 (IPv4標頭最小是20 bytes,最大是60 bytes) IPv4不常用Option功能,因為處理Option可能會消耗到寶貴的CPU資源 IPv4 Option 格式 Option Type - 指定這個 option 是做甚麼用的,Option Type 又分成3個小項目     Copied- 如果這個封包會被分割,是否要把這個option複製到全部分割後的IPv4標頭內,1 = Yes,0 = No     Option Class - option的分類,雖然2 bits可以分成四類,目前只有 0 Control和2 Debugging and Measurement,這兩個有用到     Option Number - 接續上面的分類(class),指定在類別內的功能 Option Length - 0 or 1 byte - 整個Option的大小,包含option的標頭,單位是byte Option Data - 0 or any bytes - 這個 option 要傳送的資料 可以用Windows Ping功能的 -r -s -k -j參數,這些參數會設定IPv4 Option,最常用的應該是 -r 功能 Record Route - 紀錄一路上經過的路由器數量和IP,因IPv4封包上限限制紀錄的最高數量是9 底下的圖片是使用wireshark抓Ping -r 的截圖,只截取Option的部分 圖片的上方是 Echo 下面是 Reply 底下的網址有IPv4 option列表 http://www.networksorcery.com/enp/protocol/ip.htm#Options ICMPv4 (這邊會用 v4 是為了要跟 ICMPv6 區別) 另一種方式是使用ICMP,通常是用來通知主機或路由器網路上發生了錯誤,還有常用的Ping功能也是ICMP的一部份 這邊有很完整...

Cisco IOS的License說明

圖片
這邊描述的主要是ISR I和ISR II 路由器,也就是19, 29, 39的路由器 Cisco IOS的License升到15.0版的時候,進行過大幅度的修改 因此兩種License的說明會以12.4前和15.0後說明 12.4前 以前的時代所使用的License版本繁多 要切換到不同功能的方法是 "安裝新的IOS",而不是安裝License檔案 在12.4版後,全部的IOS都支援SSH功能 這個時期的License是所謂的 "榮譽License",有點像誠實商店,先付錢買進階的功能,然後再變更ios,當然也可以想辦法找到ios然後自己變更 IP Base - 最基本的作業系統 IP Voice - 多了一些VoIP功能 AdvSecurity - 提升安全性相關的功能 SPServices - 服務提供商常用的功能 Enterprise Base - 想要跑完整的路由協定嗎,需要買這個 AdvIPServices - 包含Advanced Security和 SP Services的功能 EntServices - 包含Enterprise Base和 SP Services的功能 AdvEntServices - 包含全部的功能 15.0以後 License的變化變少了 要使用新的功能要先安裝License檔案,然後重開機就可以,不用變更IOS映像,但一定要花錢買License才能使用這些功能 IP Base - 最基本的License,買硬體就有,終於可以用完整的路由了 Security - 讓Router變得像防火牆!! 其中SSLVPN、IPS和Content Filtering這三個功能要額外買 UC - 如果要把Router當作IP PBX的話要買這個,但電話太多還是買License Data - 一些大型機房比較會用到的功能,MPLS、GLBP、IP SLA (!!) 如果要全部功能都有,那就要買三個License,通通裝進去,這樣就有全部功能 官方建議的12.4轉換到15.0的License購買表格,或者可以用Cisco Software Selector 12.4 的功能 建議購買的 15 ...