顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

Ubuntu Server透過Proxy安裝MicroK8s注意事項

Ubuntu Server透過Proxy安裝MicroK8s注意事項

離開Linux多年,最近一些Container(容器)需求,需要回到Linux的世界(看一下Windows Container,讓我嘆口氣!)。伺服器方面,由於想玩MicroK8s,因此選擇Ubuntu Server,由於是全新安裝,直接選最新22.04 TLS版本來使用。網路部分,我們會透過一台Azure架設的Proxy來當對外的端點。Proxy部分可以參考另一篇「整合EXPRESSROUTE以YARP架設內網MCR代理伺服器」的架構。但與透過YARP存取指定的MCR不同,由於在Ubuntu上需要安裝或更新不特定來源的套件,例如,Ubuntu APT、snapd、…,因此YARP比較不合適。我們另外使用Azure Container Instances採用了ubuntu/squid映像檔快速架設出一台通用存取的Proxy。

一次就愛上MS SQL Server for Linux

一次就愛上MS SQL Server for Linux

MS SQL Server for Linux 是微軟重大的一步,它非常輕量但是使用相同和現有 SQL Server 資料庫引擎。以下介紹如何在 docker 下去建立並使用 mssql-server-linux,讓各位從入門到愛上它!

Let's go!

注意,讀者需要有 docker 基本概念。本篇不會太深入 docker 身上。

在非Windows 10(1607)純cmd.exe執行Linux Bash常用指令(ssh, vim, cat, grep, ls...)

在非Windows 10(1607)純cmd.exe執行Linux Bash常用指令(ssh, vim, cat, grep, ls...)

之前有朋友在 fb 說他好高興,因為他的 Windows 可以直接下 ssh 指令,原本以為是如何啟用WINDOWS 10(1607)中的UBUNTU的BASH的好結果。結果是那台電腦安裝了 OpenSSL

在非Windows 10(1607)要執行Linux Bash指令是挺麻煩的。

舉個實際例子:我今天開發 Xamarin app 要建置 iOS app,Visual Studio 突然連不上 MAC 主機,我想用 ssh 去確認 MAC 主機連線是否正常?第一件事就是 ssh 是 Linux 的指令,為了執行 ssh 指令你可以安裝 OpenSSL,哪天,你想用神器 vim 就裝個 Windows 版的 gvim80.exe,需要一個Linux指令裝一套?有沒有一個比較 Total Solution呢?

其實有,而且如果剛好你是位程式開發人員,那麼很有機會這個解決方案早已經在你電腦裡了。今天來分享這個小技巧給各位。

Windows 8 新功能 Windows To GO 使用測試心得

Windows To Go is Live CD or Live USB?

在 Windows 8 中推出了一個亮眼的新功能稱 Windows To Go,Windows To Go 在功能上很像 Linux Live CD 或 Linux live USB,以前學習 Linux 時,因為 Linux 有太多版本,而且各版本各有強項,想要玩玩各版本的 Linux,不太可能全抓回來安裝在本機上。注意,我說的是以前,現在的硬體強,硬碟又大,記憶體又便宜,更重要的是虛擬化工具很方便,你要在一台 PC 上安裝各種版本的 Linux、Windows、Unix-like … 作業系統是非常方便且容易。

在 Linux 就有人推出 Live CD,只要透過 BIOS 設定為光碟開機,Live CD 就會在開機時自動載入至記憶體運作,我們都知道,如果 Linux 不開圖形模式(X-Window …),Linux 本身很省資源,所以 Live CD 在那就算只有 512MB 的電腦上,也可以運作的很順很好,電腦硬體好一些的,開 X-Window 後,開 Firefox 上網、打文件 … 就和本機作業系統沒什麼差異。不過 Live CD 有個很大的缺點,就是關機後什麼東西也不見了。

老實說,Live CD 讓我有許多快樂的日子。時光飛逝,當 1.44 Floppy 慢慢消失,而 USB 隨身碟慢慢成為方便的工具時,就有人想,能不能把整個 Linux 精簡至可以放入 USB 隨身碟裡(從前容量可不是從從幾 GB 起跳),直接從 USB 隨身碟開機載入使用 Linux 作業系統,因為 Live CD 只能唯讀,但 USB 隨身碟可讀可寫,等於就是一個隨身作業系統,你的設定、文件、作業 … 都會完整的存放在 USB 隨身碟,只要你的電腦有支援 USB 開機,且不是非常新的硬體規格,大多都是正常開機使用。

Windows 其實有 Live CD 版本,只是一般人不太可能去用到,我們稱 WinPE,而 Windows 8 所推出的 Windows To Go 比較像 Live USB,也就是把 Windows 8 灌在 USB 隨身碟或 USB 隨身硬碟,只要透過 USB 開機去載入 Windows To Go 裡的作業系統,你就能擁有一個如隨身攜帶的 Windows 8

Tools - 透過Linux指令取得全中國大陸IPv4, IPv6網段

工作上,有時需要判斷IP來源是否為中國大陸的IPv4網段,分享一行簡單的Shell Script:


我們使用 Linux 來抓取及分類:

cat delegated-apnic-latest |grep 'apnic|CN|ipv4|' $FILE | cut -f 4,4 -d'|'

取得的 IPv4 網段就是全中國大陸的 IPv4 網段,如果需要其他格式,請自行轉換。

那如果是要全中國大陸 IPv6 網段呢?看一下資料來源,裡面就有答案了。

Linux中cpuspeed服務討論

  仔細了解後,請參考cpuspeed的說明,如果你有啟動這個服務,且CPU是cpuspeed能控制的話,在”空閒”會自動幫你調整。所以整體降頻的現象是由cpuspeed引起。另外,我個人是不建議關閉cpuspeed,當然視需求而定。關閉前,最好先多多測試,以免出現問題。另外透過cpufreq套件來做暫時性的控制,也是不錯的選擇。如果你交的起電費,節能、省碳、綠化又都與你無關,那就…全速前進吧。

  以下是我原本想回的內容,也算做個整理。
  在討論區看到網友反應AMD CPU配合CentOS 5 64bit會放降頻使用的問題,還記得,我之前剛買不久新AMD Server,馬上測試看看,沒測沒事,測了才知道,哇~原來,新買的Server也被CentOS 5 64bit降頻了:

#cat /proc/cpuinfo
model name : AMD Phenom(tm) 8650 Triple-Core Processor
cpu MHz : 1200.000

# yum -y install cpufreq-utils

# cpufreq-info
hardware limits: 1.20 GHz - 2.30 GHz
current CPU frequency is 1.20 GHz (asserted by call to hardware).

  我這顆AMD CPU應該是2300 MHz才對,二話不說,馬上調整。我合理推測,應該是所有新型號AMD CPU安裝CentOS 5 64bit都會被降頻。不知是Bug還是…。真的要好好感謝一下這位yamaka。

  依照網友的方式調整後:

#cpufreq-set -f 2.3GHz

  發現,只會修改第一顆,其他依然是1.20 GHz,所以只好請男人(man)出來。

-c --cpu
   number of CPU where cpufreq settings shall be modified.
-d --min
  new minimum CPU frequency the governor may select.
-u --max
  new maximum CPU frequency the governor may select.
-g --governor
  new cpufreq governor.
-f --freq
  specific frequency to be set. Requires userspace governor to be available and loaded.

  所以指令我修改了一下:

#cpufreq-set -c 2 -f 2.3GHz

  那個-c 2的意思是,第二顆cpu 2,如果你注意看訊息,我們是從CPU 0, 1, 2 …開始計算,所以那個-c 2會直接幫你修改CPU 2的設定。

  另外實測後發現,cpufreq在重開機後,設定就會消失,所以你可以看成一個暫時性或單次的調整動作。

PHP SysInfo:網頁顯示Linux系統資訊

在我們學習 Linux 過程中,是否常常要查詢系統資訊時,就要下一堆的指令。

我們查開機到現在的時間,先下一個 uptime 指令,想查 CPU、記憶體的狀況,再下一個 top 指令,想看網路卡的情況,下一個 ifconfig 指令,想看一下磁碟使用情況,下一個 df 指令,想了了 pci 情況再下一個 lspci 指令 … 想知道 … 再下一個 … 指令。

哇!有完沒完。那你可能會說,可以使用 X-Window 。是沒錯啦!如果你能坐在電腦主機「旁」我個人是非常建議使用 X-Window,就像常聽到的一句話:「快又有效。」那你可能會說,就算我沒有在主機旁,我還有 VNC ( Virtual Network Computing ) ,可以嗎?是可以啦,如果你的連線速度是「咻 、咻、咻」等級的話,我沒有什麼好反對的。

那還有沒有更好的方式呢?如果我說,那用網頁的方式來看,如何?( 眼睛為之一亮 )真的嗎?今天就為各位帶來一個秘密小武器:PHPSysinfo。

PHPSysinfo 是使用 PHP Script 來分析 /proc 中的資料,然後用簡單又漂亮圖表來顯示。他會顯示的系統資訊像是:開機到現在的時間(Uptime), CPU, 記憶體, PCI 裝置, SCSI 裝置, IDE 裝置, 網路卡, 磁碟使用情況, 還有其他資訊。而且它支援更換樣版及多國語言,還可以這些系統資訊用 XML 格式輸出,這樣有沒有很棒。而且他的安裝,超超超級簡單。連設定都不用,蝦米!!心動了吧!動手把他「作」了吧!

實作系統:CentOS 4.5 Server , 核心版本:2.6.9-55.EL
實作配備:PⅡ Celeron 450 + 256 RAM

官方網站:http://sourceforge.net/projects/phpsysinfo/

下載點:http://nchc.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.5.3.tar.gz

先以 root 登入:

  

  cd /var/www/html

  wget http://nchc.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.5.3.tar.gz

直接把 phpsysinfo 解壓縮到「你的」 Web 根目錄:

  tar -zxvf phpsysinfo-2.5.3.tar.gz

接下來做唯一的一件事:

  

  cp config.php.new config.php

  rm phpsysinfo-2.5.3.tar.gz

做完了,前後五個指令,快不快樂、高不高興!設定檔連改都不用改。簡單吧,我真的沒騙你(一般來說是真的不用改,除非你要做一些其他的設定)。接下來打開你最愛的瀏覽器 http://IP/phpsysinfo/ or http://domain/phpsysinfo/ 就可以看到美美的系統資訊了。然後,把畫面拉到最下方,可以更換語言跟樣式,選一個你喜歡的吧!

注意:

在 README 中有提到一些要注意的地方,1、它在 PHP 5.2 上 Run 會有問題。2、在 php.ini 中的參數 include_phth 需含有 "."、參數 safe_mode 必須為 "off",還有如果參數 apc.optimization="1",也會產生問題,請關閉。一般來說,如果你的 PHP 是使用系統預設值(也就是說不是使用 tarball 安裝,或有修改過內容),應該沒有什麼問題才對,所以如果你在安裝時有出現一些錯誤,請查一下是否是以上的問題。

寫於 2007/5/24

Bandwidthd:簡單、好用又強大,各別IP流量統計

  你是否有過這樣的困擾或經驗,幸幸苦苦的架好了一個強大的MRTG,終於可以好好的看看網路流量的情況了,但是看到 的是 一個「總體」的流量。正當高興時,有人在你的網路中「嘿嘿嘿」或是下載P2P或是一個可憐又無知的小朋友電腦中毒了。這時,終於看到MRTG美麗的圖形, 上上下下,左左右右。但你就是找不出來,是「誰」?誰在創造這些美麗的圖形,是「誰」?是「誰」?

  終於,天邊出現一道光,人們跟著說:「就是那道光,Bandwidthd」。(小說看太多了@.@~)

   Bandwidthd 是一套以圖形化、網頁化的方式,顯示你的 TCP/IP 網段中的使用狀況。Bandwidthd 圖形化是以網段中「各自獨立的 IP」為對象,它可以不同的色彩來顯示 HTTP, TCP, UDP, ICMP, VPN 以及 P2P 協定的流量。可以讓網管人員更了解使用者使用網路的情況。和 MRTG 不同的是,bandwidthd 統計是各別的 IP 用量,而不像 MRTG 是顯示某一網路介面的總量,對於網管人員而言,Bandwidthd 可說是一項好用的利器。而且在官方網站上有提供這樣的一個數據:My entire ISP (2000-3000 IP addresses across 4 states) is graphed on a Celeron 450 every 10 minutes。意思是說,使用賽陽450的CPU,可以在10分鐘掃完2000-3000 IP。也就是說,我們可以拿比較舊的電腦來做這個統計工作,而不用擔心效能問題。並且,他也提供和資料庫整合的功能,實在是太棒。最最最重要的是,他的架 設,超簡單。等不及了,我們快來動手吧!
  • 實作系統:CentOS 4.5 Server, 核心版本:2.6.9-55.EL
  • 實作配備:PⅡ Celeron 450 + 256 RAM ( 剛好可以證明:「這是真的。」跟隨者:「真的~~~」 )
  目前最新版本為 2.0.1 (2007/5/23),而且他還有提供Windows版本,真的是太棒了。
  先以 root 登入:
  在安裝之前,我們先看看 README / INSTALL.Unix ,發現有些東西必須先確認一下,你必須確認有安裝以下函式庫:
  檢查一下:
  • rpm -qa | grep libpcap
      找出:libpcap-0.8.3-10.RHEL4
  • rpm -qa | grep libpng
      找出:libpng-1.2.7-3.el4
  • rpm -qa | grep libgd
  你會發現,最後一個 libgd 會是空白的,沒關係,這跟等一下的錯誤有關哦!如果沒有安裝的話,建議使用 yum 來安裝。
  • yum -y install libpcap*
  • yum -y install libpng*
  • yum -y install libgd* (不會安裝任何套件,裝孝為嗎?請往下看,大人。)
  建議把第二個 libpng 執行一下,因為我發現有另一個 libpng10 的套件,而且我未安裝 libpng10 套件時,會出現以下錯誤訊息:
  • configure: error: Bandwidthd requires but cannot libpng
很明顯的,它是使用 libpng10 而不是使用系統內建的 libpng,然後開始安裝吧:
  • ./configure && make install
不過在configure時一直出現以下的錯誤:
  • configure: error: Bandwidthd requires but cannot find libgd
  找又找不到(rpm),安裝也沒有東西(yum),是怎樣!!! (集氣完快成了{..ooOO}!) 到網站看看有沒有什麼資訊( 網站上說:The GD library has moved to http://www.libgd.org/ ), 發現套件名稱都是以 gd 為開頭,那試試 yum search gd,果然找到一堆套件,還好我試了第一次就OK了,不然可能要發功放氣一下才行了!(本來在另一台主機測試時,是直接使用 yum install gd* ,馬上就OK了,但想想有需要安裝那怎多東西嗎?所以就再找一台來試,結果在 CentOS4.4/4.5 情況都一樣,在非常Luck的情況下,試了第一個套件就成功,還好還好,汗~~~)
  • yum install gd-devel <-- 兇手就是他,看我的元氣彈!!!
  再重新configure一次
  • ./configure && make install
  成功了,沒有錯誤訊息了。 安裝完成後,它會將 bandwidthd 安裝至 /usr/local/bandwidthd 下,接下來就是 bandwidthd 超級簡單的設定,請編輯:
  • vi /usr/local/bandwidthd/etc/bandwidthd.conf
  在第 10, 11, 12 行,把這三行註解(#):
  • # subnet 10.0.0.0 255.0.0.0
  • # subnet 192.168.0.0/16
  • # subnet 172.16.0.0/12
   最後加上一行自己網域的設定:
  • subnet 192.168.1.0/24
 一個Intranet, Class C, 指定你要統計的subnet,全部的設定就只有一行,超簡單吧!存檔之後,便可準備執行。執行bandwidthd:
  • cd /usr/local/bandwidthd
  • ./bandwidthd
  然後我們只要在 web 主目錄建立一個Link即可:
  • cd /var/www/html
  • ln -s /usr/local/bandwidthd/htdocs bw ( 目錄名稱自己決定 )
  接著您需要等個幾分鐘,便可用 http://IP/bw or http://domain/bw 看到網路中各主機的頻寬使用情況!
注意一
再來因為這個程式是使用 C 語言所寫,所以你的系統必須要有 gcc 和相關的套件,如果你在 configure 時會出現:
  make: cc: Command not found
  或是
  configure: error: no acceptable cc found in $PATH
那怎請先把 gcc 安裝起來。我的 CentOS4.4 剛裝完時,還真的沒有 gcc ,產生了第二個錯誤訊息:
  yum -y install gcc*
或是把 gcc 升級到最新版本:
  yum -y update gcc*
應該就可以解決 configure 時的問題了。

注意二
以下是 bandwidthd 的 README 中倒數第二段,有一段話:

By default, Bandwidthd now runs in promiscuous mode. This means it can be used to monitor traffic not routing through it's host. Just make sure that the host and the actual router are on the same hub (Not switch) and everything will be ok.
注意那個粗體字,所以,請把 Bandwidthd 的主機與你的骨幹用hub連接,應該就會有所有的流量了。或者,如果你的nat或router是自己架的Linux,那就直接裝在 nat / router 主機上也行。
Windows 安裝 Bandwidthd
  Bandwidthd 在 Windows 的安裝,更簡單100倍。我們快來看看!
  1. 先把檔案下載回來:http://nchc.dl.sourceforge.net/sourceforge/bandwidthd/bandwidthd-2.0.1-binary-windows.zip
  2. 解 壓縮後,會產生一個 bandwidthd 的目錄,移到你要放 program 的地方(一般是放到 \program file\ 之下)。然後先看一下 README.txt 和 INSTALL.Windows.txt 有一件事要確認,你是否有安裝 Winpcap 這個軟體,如果沒有的話,請先下載:http://www.winpcap.org/ ,最新版是 winpcap 4.0。
  3. 然後,修改 bandwidthd/etc/bandwidthd.conf ,將你要統計的 subnet 設定上去,存檔。
  4. 點擊 "Install Service.bat" 這支程式,把 bandwidthd 安裝到 Windows系統服務中。
  5. 「開始」--> 「我的電腦」 --> 滑鼠按右鍵 --> 「管理」 --> 「服務及應用程式」 --> 「服務」 --> 「 bandwidthd 」
  如果要停止 bandwidthd.exe 必須使用 「 Windows 工作管理員 」來直接停用四個 bandwidthd.exe。另外要注意,是否有 cygrunsrv.exe 這支程式,有的話一併Kill。 如果要把 bandwidthd 從「服務」中移除,請先把所有 bandwidthd 工作停止,然後點擊 "UnInstall Service.bat" 這支程式就可以了。
  要看統計的結果,進入 bandwidthd\htdocs 點擊 index.html 就可以看到美美統計圖形了。可以開始抓……山豬了。

本文PDF下載:



註:本文寫於2007/7/25

Bind 9 -- 使用named-checkzone的SOA及NS錯誤訊息

  在Bind 9中有一個named-checkzone的指令,有網友反應使用後會出現錯誤訊息:

  例如:
[root@dns1 ~]# cd /var/named/chroot/var/named/
[root@dns1 named]# named-checkzone -d named.abc.com.tw named.abc.com.tw
......
zone named.abc.com.tw/IN: has 0 SOA records
zone named.abc.com.tw/IN: has no NS records
  原本很直覺得反應,應該是設定檔(/etc/named.conf或/var/named/chroot/var/named/named.abc.com.tw)有問題,一般來說Bind 9的DNS問題不外乎這是從這兩個地方下手。還很認真的看著網友的設定檔。但有個小奇怪的地方,網友反應,雖然有錯誤訊息,但Bind 9載入named.abc.com.tw執行確正常。

  在我的Linux上重覆測試,測了三台不同的Linux版本的Bind 9,從設定檔/etc/named.conf到zonefile(named.abc.com.tw),怪了,測不出來有什麼問題!上網搜尋了一下,看到國內外好多人有同樣的問題,但都沒有解決之道,奇了,這是什麼問題?

  但有發現一個現象,三台Linux中只要使用named-checkzone都出現一樣的錯誤訊息。這是怎麼了,怎麼可能?我想,那問題應該是出在named-checkzone?那就來好好的man一下吧!

[root@dns1 named]#man named-checkzone

OPTIONS
-d
  Enable debugging. # 啟動除錯

-q
  Quiet mode - exit code only. # 安靜模式

-j
  When loading the zone file read the journal if it exists.
  # 如果*.jnl存在,在載入zone檔案讀取*.jnl

-c class
  Specify the class of the zone. If not specified "IN" is assumed.
  # 如果你的zone檔案沒使用IN語法,例如:「IN A 192.168.10.1」,但你使用簡寫 「A 192.168.10.1」,請下這個參數。

zonename
  The domain name of the zone being checked.

filename
  The name of the zone file.
  玩一玩參數,有幾個比較重要參數的我列出來。但問題還是沒解決。又找了ISC原始指令文件,嗯,跟man一樣,但我也注意到了一個地方,原本在測試時,只是將網友的指令Copy起來,直接paste到putty中測試,也沒多想什麼,但為什麼named-checkzone中一定要下「兩次」路徑呢?

  想著,看著Monitor:zonename、filename、zonename、filename???ㄝ,我想通了,文件其實有交代清楚,只是我們沒了解清楚。
zonename
  指定一個在zone裡的domain name來開始檢查。

filename
  指定zone檔案的名稱。
  測試後,BingGo,正確解答,正確指令如下:
錯誤指令:
[root@dns1 named]# named-checkzone -d named.abc.com.tw named.abc.com.tw
正確指令:
[root@dns1 named]# named-checkzone -d abc.com.tw named.abc.com.tw
  第一個zone指的是「domain name」不是單純的file anme。這樣了解嗎?

  我又再一次見證了男人(man)的實力。

Linux常用指令表

  在無意見發現 FOSSwire.com 這個網站內有個不錯Unix/Linux常用指令表,Unix/Linux Command Cheat Sheet ,但提供的內容上無繁體中文版,但作者很好心有提原始 odt 檔,剛好家中的電腦是安裝 openoffice 2.x版,所有這個六、日(2008/4/27 ~ 28)花了點時間,將文件翻譯由原來的英文翻譯成繁體中文。翻譯真的不是簡單的工作,尤其是這種技術的東西,原文看起來是很簡單,但照字面翻譯又不合「中文」意思,所以這樣一張就花了我二天的時間!

  另外,因為要分享給大家,所以就把原本很想開 blog 的行動拿了出來,讓這篇文章,成為我的開版文!

Linux常用指令表:



  這個表格非常合適初學者來使用,分為:檔案指令、程序管理、檔案權限、SSH、搜尋、系統資訊、壓縮、網路、安裝、快速鍵。但還是有些不足的地方,例如:網路指令中,就沒有ifconfig,或較新iwconfig (無線網路),這份表格還有許多可以擴充的地方,(也有可能作者就是把它定位為“初學者“來使用),有時間再幫大家整理一份比較完整的指令表格。

  翻譯中,有些單字我沒全部翻譯出來(memory, swap, domain, cpu…)是希望更能符合原意且這些單字翻成中文真的很像在寫文言文,這樣就沒有初學的味道。

  這個文件希望能保留原味又不失味道,希望你會喜歡。