跳到主要內容

發表文章

IPv6 系列(一):IPv6 兩三事

IPv4:32位元,格式 xxx.xxx.xxx.xxx (xxx:0~255) IPv6:128位元,格式 hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh (hhhh:0000~FFFF) IPv6種類: (a) Link Local;(b) Unique Local;(c) Global (a) Link Local 固定為  FE80  帶頭(二進位的 1111 1110 10 開頭再固定接上54 bits的 0,最後接64 bits的Interface Identifier) 僅限同一個 Link(網段)之間使用,不可跨越 Router 送往其他網段 每個已經啟用 IPv6 的介面會自動各配一個 Link-local 位址,不論該介面是否已有其他可跨網段的 Unicast 位址 主要用於 Neighbor Discovery、Automatic Address Configuration…等用途 您可以使用 Link-local Address 與同網段其他 IPv6 主機進行溝通,只是執行這個動作時,由於主機上可能有多個介面都配有 Link-local Address,因此您需要指定外送介面 另外,在 IPv4 表示本機的 127.0.0.1,在 IPv6 下可表示為 ::1/128 (b) Unique Local FC00::/7 -唯一區域位址(ULA,unique local address)只可用於本地通訊,類似於IPv4的專用網路位址 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。 這定義在 RFC 4193 中,是用來取代站點本地位域。這位址包含一個40位元的偽隨機數,以減少當網站合併或封包誤傳到網路時碰撞的風險。 這些位址除了只能用於區域。 (c) Global 可用於網際網路使用的 IP 位址。 本校申請所得的 IPv6 位址為:2001:288:102b::/48,經計算共有 1,208,925,819,614,629,174,706,176 個 IP 位址可以用。 目前規劃每個 vlan 網段分配 2001:288:102b:xxxx::/64 的 IP 位址。共可以分出 65,5...

伺服器預約關機程序

這一兩年機房所在的位置常常遇到公司或大學部電氣維修通知要停電,所以都要事先下伺服器排程關機。但是機房內伺服器有 Linux、Windows Server 等不同的作業系統,排程操作的方式也不一樣,乾脆把操作和指令記下來,方便以後參考。 a. Ubuntu Linux 伺服器用 at 指令,大部份的機器指令是:「at hh:mm yyyy-mm-dd」,然後關機最主要的程式是「sync」和「shutdown -h now」 其中結束<EOF>是按 Ctrl + D 查詢排程工作用 atq 其餘指令操作內容可以參考  鳥哥的 Linux 私房菜 第十五章、例行性工作排程(crontab) b. Windows Server Windows Server 用的是「系統管理工具 〉工作排程器」 關機指令是「System32\shutdown.exe」加參數「-s」 c. pfsense pfsense 防火牆的作業系統是 FreeBSD,排程方法和 Linux 一樣都是用 at 指令 比較要注意的是它是用「at -t yyyymmddhhmm」

校務系統使用 SSL For Free 憑證

因於校務系統使用的主機是 Ubunt 12.04,在使用 Certbot 時一直發生問題且無法解決。在查詢 Let's Encrypt 說明文件時,發現可以使用 SSL For Free 網站申請且下載 SSL 憑證,再手動引用至 Apache 中。 SSL For Free 網址: https://www.sslforfree.com/ 使用 SSL For Free 憑證需要登入,因為是手動下載引用,不像 Certbot 可以自動更新。當憑證快過期之前,需要登入去做 renew 更新的動作。 使用 SSL For Free 需要驗證網站的擁有權,要進行網域驗證。驗證通過後,可以下載產生的90天憑證,一樣是 Let's Encrypt Authority X3 簽發,sha256RAS加密版本。 下載的 sslforfree.zip 檔案解開後,有三個 ssl 憑證檔案:ca_bundle.crt、certificate.crt、private.key。按照 Apache ssl.conf 的設定放到正確的位置,重新啟動 Apache 後就啟用了。

為學校的網頁伺服器使用 Let's Encrypt SSL 憑證

之前為了校務系統 Https 安全連線,採用自行簽發的 SSL 憑證,簽發單位 CA 可以用學校的網域,但因為是自行簽發的緣故,雖然可以使用但網頁瀏覽器卻會發出警告。學校並無教育單位提供的上層憑證,而也用不起商業憑證,所以這種情形也是沒有辦法,至少有 https 的網頁可以用了! 後來在大同大學的通知下,發現有佛心的單位提供有效 SSL 憑證的申請服務: Let's Encrypt,立刻申請使用。 Let's Encrypt  網址: https://letsencrypt.org/ 提供 sha256RSA 的 SSL 憑證,簽發單位(CA)是  Let's Encrypt Authority X3,有效期限是90天。 Let's Encrypt 提供多種憑證申請的機制,比較容易使用的是 Certbot,它可以依照網頁伺服器和作業系統版本提供操作步驟,像學校使用 Ubuntu + Apache 是非常方便的,只要按照網頁提示的步驟就可以完成,並且可以自動更新。 Certbot 網址: https://certbot.eff.org/ 學校大部份的 Linux 是使用 Ubuntu 16.04 ,所以選擇正確的版本之後,系統就會顯示操作指引: 按照說明操作很簡單就可以完成了。 後記: Let's Encrypt 真的非常方便,但是校務系統那一台是 Ubuntu 14.04,在安裝 Certbot 發生問題,查詢網路上的資料,也有不少人遇到同様問題,使用上面提供的解決方式也無法處理。 原本是放著校務系統那台繼續使用自行簽發的 SSL 憑證,在查閱 Document 說明文件中,發現有手動引用憑證的方式,總算完成憑證的使用。手動引用方式下一篇再寫出來。 

學校申請IPv6情形與設定

學校申請的IPv6發下來了:2001:288:102b::/48

改用 Python 顯示3D 學生座位成績表

以前有使用過用 gnuplot 來繪製校務系統的座位成績圖,改用 python 搭配 matplotlib 來繪製新的 3d 圖形 程式碼: import sys import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter with open("grade_data/sm2-1.txt", "r") as f:     mydata = f.readlines() x = [] y = [] z = [] for myline in mydata:     if myline[0] != '#':         tmp = myline.split()         x.append(int(tmp[5]))         y.append(int(tmp[6]))         z.append(float(tmp[4])) bottom = np.zeros_like(z) width = depth = 0.5 fig = plt.figure() cmap = cm.get_cmap('CMRmap') max_h = np.max(z) min_h = np.min(z) co = [cmap((k - min_h)/max_h) for k in z] ax = fig.add_subplot(projection='3d') ax.bar3d(x, y, bottom, width, depth, z, shade=True, color=co) ax.grid(True) plt.xlabel("X") plt.ylabel("Y") ax.set_title("n = %s , me...

Apache 採用 LDAP 認證

最近因為無線網路認證的需求,把 Freeradius 和 OpenLDAP 再重新架設起來。 無線網路的部份是藉由 pfSense 防火牆的 Captive portal (網頁認證) 功能,將防火牆內的 client 都事先導到 Freeradius 去做認證,使用者的帳號和密碼由 OpenLDAP 儲存。 使用者的帳號、密碼分成兩個群組: 教師部份:專任教職員同電子郵件規則,兼任教師則需向資訊組申請一組帳號密碼。 學生部份:同學生網路空間,以“st學號”為帳號,身份證字號(英文大寫)為密碼 除了無線網路部份,最近在學校的 Apache http server 上實驗 LDAP 權限管制成功。 OS:Ubunt Linux,Server:Apache 2 要使用 LDAP 前,需要先啟用 mod_ldap 和 mod_authnz_ldap 在需要作權限管制的路徑上(我是放在 <Directory>…</Directory> 的設定裡,一般看到的使用說明都是<Location>…</Location>)加上 ldap 設定:  AuthType basic  AuthName "LDAP auth"  AuthBasicProvider ldap  AuthLDAPUrl "ldap://LDAP_IP:Port/basedn?attribute?scope?filter  Require valid-user