2007年9月20日 星期四

[轉錄OpenVPN on FreeBSD

這篇 quick guide OpenVPN with FreeBSD, PF and Windows XP 寫得蠻清楚的
http://www.ubergeek.co.uk/howtos/openvpn-freebsd-pf-windows-howto.html
以及找到 Richliu 的 wiki 上的 OpenVPN 也很好懂
http://wiki.richliu.com/index.php/OpenVPN
不過我還是在看了 howto 和 man 之後才了解大部分的事
筆記一點東西



* bridged or routed ?

一開始看 howto 的說明, openvpn 有兩種分配 ip 給 client 的方法
想說其實用 vpn 的人不多、IP也夠, 想說用 bridged 的方式就好
但接著看到他推薦 routed 比較好設就馬上改變心意 XD
難怪 google 到的前幾名都是怎麼設 routed 的..
用 routed 的話, /etc/rc.conf 要加上 gateway_enable="YES"
* 裝 OpenVPN

用 ports 裝一下 security/openvpn 就好
記得在 /etc/rc.conf 加上 openvpn_enable="YES"



* logging

就 syslog 一下...
/etc/syslog.conf 加上 !openvpn *.* /var/log/openvpn.log



* firewall 設定 nat forwarding

設好 nat forwarding 這樣才會有正確的 vpn routing
上面那篇用 pf, ipfw 應該也行啦, 只是趕時間就沒查 ipfw, 直接依樣畫葫蘆了

* CA(Certificate Authority) key

要有 openssl, 然後可以用 openvpn 提供的 easy-rsa script
build-ca: 生 CA
build-key-server: 生 server key
build-key: 生 client key, 基本上一個 client 一個 key
build-dh: 生 Diffie Hellman parameters, openvpn 要用的

生完 keys 後, server 要有 ca.crt, server.crt, server.key,
client 要有 ca.crt 和 client key(如果要用的話)



* login authentication

我考慮過兩種方法

1. certificates & keys: 需要一個 client 生一個 key. 正常是每個 client
使用一個 key, 也是有人設成多人用一個 key 啦.... 要的話 server 的設定要加
上 duplicate-cn 就是
2. username & password: 用 shell 帳號, 應該還可以搭配 NIS. 在 server 的
設定加上 plugin /usr/local/lib/openvpn-auth-pam.so login 若要單純用帳
號密碼登入不使用 client key, server 的設定再加上 client-cert-not-required
和 username-as-common-name

方法 2 如果考慮到被聽走密碼的可能, 可以再加上 tls 加密, 用
openvpn --genkey --secret ta.key 產生 tls key, server 與 client 兩邊都要
有這個 key, 並在 server 設定 tls-auth ta.key 0, 在 client 設定
tls-auth ta.key 1



* server 及 client 的設定

基本上改範例就行了
authentication 的設定要依照要用的方式設, 要用哪種就加上相關設定

-- server.conf --
# routed 用的 device
dev tun
# udp server, 若 client 有要設 proxy 要用 tcp
port 1194
proto udp

# vpn nat 的 ip pool, 隨便設一段跟範例不一樣的 private subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# 把 client 的 default gateway 搶過來, 用 vpn server 去 routing
push "redirect-gateway"
# 設台 DNS server
push "dhcp-option DNS 168.95.1.1"
# vpn ip pool 的 routing
push "route 10.8.0.0 255.255.255.0"

# 用 shell 帳號登入, 並用 username 作辨識
plugin /usr/local/lib/openvpn-auth-pam.so login
username-as-common-name
# 不使用 client key
client-cert-not-required
# 使用 tls
tls-auth ta.key 0
# CA keys 和 Diffie hellman parameters, 放在和設定檔同一目錄下
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

# 最大 client 可連數目
max-clients 100

# 其他照範例設的
# 如果該台機器有多個 IP, 再加上 local
keepalive 10 120
cipher BF-CBC # Blowfish (default)
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
-- client.ovpn on Windwos --
client
dev tun
proto udp
remote 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
comp-lzo
verb 3
cipher BF-CBC # Blowfish (default)

# 用帳號密碼登入
auth-user-pass

# keys
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1

# For Vista security issue, client 是 Vista 的要加
route-method exe
route-delay 2

2007年9月17日 星期一

[轉錄]啟用Apache2 的mod_deflate來壓縮網頁提高傳輸效能

星期四, 十一月 10, 2005
啟用Apache2 的mod_deflate來壓縮網頁提高傳輸效能
今天為了讓Apache 2能夠啟用網頁壓縮,本來是找有經驗的朋友幫忙看用mod_gzip來壓縮會不會比較好,畢竟gzip壓縮網頁輸出是很多人都在採用的技術。後來翻Apache 2 Module mod_deflate 資料才發現,原來很多人用mod_gzip其實是因為Apache 1.x系列沒有內建網頁壓縮技術,所以才去用的。Apache 2官方在開發的時候,就把網頁壓縮考慮進去,內建了mod_deflate這個模組,所以Apache 2就不需要使用到mod_gzip,但2者運作的原理頗為類似。啟用mod_deflate這個網頁壓縮的模組,功能和效率和mod_gzip是差不多的,甚至還好一些,且不需要再另外找mod_gzip模組,apache 2就有內建,將模組前面的註解拿掉就可以使用。yblog.org啟用後,所消耗的頻寬流量便下降許多,可以同時提供給更多人瀏覽頁面的頻寬資源,考量本站使用的文件格式後,實作的方法如下:
在http.conf檔案裡有關載入模組的地方,加上這一行:
LoadModule deflate_module modules/mod_deflate.so接著,在http.conf檔案後面,加上這一段:
DeflateCompressionLevel 9AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-phpAddOutputFilter DEFLATE js css這樣的作法可以壓縮一般網頁中會用到的html、xml、php、css、js等格式檔案輸出,雖然會佔用掉伺服器處理器的一點點處理器時間,瀏覽者在接收網頁資料時也會消耗極短暫的一點點處理器時間(短到使用者不可能察覺),不過卻可以大幅減少資料傳輸量,減少網路頻寬被吃掉的情形。DeflateCompressionLevel 9是指壓縮程度的等級,從1到9,9是最高等級。據了解,這樣做最高可以減少8成大小的傳輸量(看檔案內容而定),最少也能夠節省一半。DeflateCompressionLevel 預設可以採用 6 這個數值,以維持耗用處理器效能與網頁壓縮品質的平衡。至於已經是壓縮過的圖片格式如jpg,音樂檔案如mp3、壓縮檔如zip之類的,就可以不需要再壓縮了,因為這種檔案你一開放伺服器傳輸時壓縮,處理器時間會跑不完。有關這個mod_deflate的效能,這篇文章Apache 2 mod_deflate Benchmark分析得很好,也值得參考。要檢查加上模組的成果,可以馬上透過這個網站來看看壓縮效率如何Real-Time Compression Check以優格網首頁為例,25445 bytes變成7828 bytes,壓縮後的比例約省下了70%。而以永遠的真田幸村為例,首頁從69045 bytes變成18001 bytes,節省了74%,傳輸速度快了的3.8倍,不過處理速度沒有變慢。至於Lighttpd這套也很紅的網頁伺服器軟體平台,也支援mod_deflate來壓縮網頁提高傳輸效能。而微軟Window伺服器的IIS平台,IIS5得搭配外掛的模組才能實現壓縮功能,IIS6、IIS7則有內建,但壓縮的效能都沒有Apache系列好就是了。XD
真田幸村是我最傾慕的歷史人物,真誠、盡忠、懷抱理想與大義名分、不向賊人妥協,這也是對己期待的投射,盼有朝一日能有此氣度。願幸村紅鎧策馬赤備突擊的身影,帶給我們更多的勇氣。