2009年8月21日 星期五

Config a linux NAT

為了省錢,於是我決定將主機多插一張網卡,壓一條CrossOver的線來讓筆電上網,然後按部就班的完成了DHCPd的設定。

UBUNTU安裝dhcpd要裝dhcp3-server套件,然後編輯dhcpd.conf設定,非常簡單,所以不贅述。

BUT,讓我困惑了三天的事情是,設定完DHCP與route,怎麼著就是不通咧?

依照以前ccna的經驗,你只要有確定的Route,那就會通啊…結果,因為DHCP發給的是private ip,linux的預設動作是會discard掉,但是Cisco router才不管你是不是private ip,你就算設定一大堆10.0.0.0/24到172.16.0.0./24再去192.168.0.0/24,只要routing table裡面有,就送!所以可以用private IPs建立起很複雜的WAN與LAN共用。

linux建議,加用這條NAT轉址,才會把封包前進,假定我172.16.0.0/24是eth1(DHCPd),192.168.0.0/24是eth0

iptables –t nat –A POSTROUTING –s 172.16.0.0./24 –o eth0 –j MASQUERADE

做到這裡,令人想唱~~ ㄜ 我的憤怒,好像一把火,燃燒了整個沙漠~~太陽見到我,也要躲著我…

2009年8月18日 星期二

從Cron或AT啟動X window Client

搞半天 最後還是要寫個小script包起來,code is

#!/bin/sh
/usr/bin/xterm -display :0.0 -e "Name_Of_The_Client"

2009年7月24日 星期五

Flash Plugin 無法正確顯示中文

首先介紹如何安裝Adobe Flash Plugins

    1. 到ADOBE下載Tarball回來
    2. 把.so解壓縮到/usr/lib/firefox/plugins,或~/.mozilla/plugins。前者Firefox專用,後者使用者所有瀏覽器共用。

好啦,真是簡單。不過一開小狐狸,怎麼有些帶有中文字的flash都變成方塊字?雖然中文真的是方塊字,但不是很多方塊堆在一起就是中文…解決辦法拜眾家高手,求得如下:

編輯/etc/fonts/conf.d/49-sansserif.conf

找到

<edit name="family" mode="append_last">
            <string>sans-serif</string>
        </edit>

替換為有中文的字型,比如說”文泉驛正黑”,這樣就ok。

2009年7月22日 星期三

Apache Module mod_dav

WebDAV,一個不常聽到的功能(因為不好管嗎?),名字是Web-based Distributed Authoring and Versioning,使用HTTP協定讓妳對Web server裡面的檔案上下其手。換句話說,Web Server上傳方式不再透過ftp,防火牆將不需要開放port 21。

分成兩方面來講,首先是FreeBSD平台的Apache( V2.2),打開httpd.conf  LoadModule 確定幾樣東西都有一起出操:

LoadModule dav_module
LoadModule dav_fs_module
LoadModule auth_digest_module

FreeBSD的dav設定檔是用Incloud的

# Distributed authoring and versioning (WebDAV)
Include etc/apache22/extra/httpd-dav.conf

打開編輯,範例如
--------------------------------------------------------

DavLockDB "/opt/usr-local/var/DavLock"

#存放Lock狀態資料庫的位置

Alias / "/opt/usr-local/www/apache22/data"

#開放的語法

<Directory "/opt/usr-local/www/apache22/data">
    Dav On

    Order Allow,Deny
    Allow from all 
#認證方式
    AuthType Digest
    AuthName www
#認證完畢 登入系統的等效帳號是www
    AuthUserFile "/usr/local/user.passwd"
    AuthDigestProvider file 
    <LimitExcept GET OPTIONS>
        require user admin
    </LimitExcept>
</Directory>

---------------------------------------------------------

接下來,產生密碼檔

htdigest -c "/usr/local/user.passwd" www admin

第二部份,就是在Client的設定。Client有很多種,WebDrive、Gnome VFS都名列其中。不過這裡很簡單,最多本系學生用的應該是DreamWeaver,只需要在SiteManager指定WebDAV方式上傳,上傳位址是剛剛設定的網頁位址,上傳帳號admin,搞定。

ok,接下來為什麼很少有人這樣搞?原因很簡單,一般防火牆是從layer 3檢查ip封包來限制存取(主要在這裡,是要防止被寫入,免得首頁被改圖),http GET POST等方法必須要拆開封包檢查,不是layer3能解決的(或者說,這需要消耗運算資源、高檔防火牆),因為HTTP服務”一定”是對全世界服務(所以,不斷線就是可以用暴力攻擊)。第二重點,在檔案系統裡面讀寫權限要設定好,不然真的很容易就統統被人看光了不打緊,還被入侵。

比較好的想法是,在另一個port(如加SSL)跑另一個有DAV功能的apache(耶?沒想到吧!),就可以在layer 3檢查連線來源來限制。

2009年7月17日 星期五

誤闖非軍事管制區

DMZ (這不是表情符號,謝謝)

在電腦網絡中, DMZ (Demilitarized Zone) 為一個放於企業私人和互聯網之間作為緩衝地帶的電腦主機或小型網路。它防止了外來入侵者直接存取放有企業內部資料的伺服器。INTERNET使用者只可以存取 DMZ 中的電腦。一般 DMZ 都會有企業網站,供外界提查詢及使用。但不包括企業內部機密資料。如不幸外來入侵者侵入 DMZ 並令網站癱瘓,重要的企業資料仍不會外泄。
一般DMZ設置時會將ip規劃與後方NAT保護的ip是不同區段(防止layer 3的滲透)。

話說在公司用Outlook Express收信,自從某事件發生後,常常連不到郵件伺服器。直到方才靈光一閃,決定正式查一下。nslookup指出郵件伺服器ip是192.168.0.1。公司給電腦的ip是172.16.xx的Class B位址。為了讓更多設備一起上線(這ip寶貴的原因是,很多對外重要伺服器連線都是ACL鎖住這ip)所以我用一台Dlink 704UP做NAT。巧的是,Dlink 704UP的NAT一定是192.168.0/24的區段,所以再沒有通道或其他奇技淫巧之前,保證一輩子都收不到信。

Network File System Server

NFS在網路夠快(LAN)的時候,可以解決很多空間與同步的問題。不過也有一個問題,當其中一個出問題的,所有的nfs都會很有義氣的一起倒地不起,所以要當NFS,就要夠穩。

基礎概念就是三隻程式互相幫助,rpcbind在櫃台帶路、nfsd負責提供茶點餐、mountd送餐。(等等~這比喻遣詞用字怪怪的,誰做菜啊)。

FreeBSD做NFS很簡單,步驟不多,只要你沒有手殘在編kernel時拿掉NFS選項。

打開/etc/rc.conf加入

rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"



然後編輯/etc/exports說明本機開放分享的目錄為何。格式有三欄,與linux的格式略有不同(!!)。第一欄是目錄,同一個檔案系統只能寫一行。所以比如說/usr是一單獨分割的檔案系統,那麼/usr/src /usr/local就要寫在同一行。第二欄是參數,第三欄是分享對象。不同於linux可以寫在一起成為 對象(參數)。



然後把這三位喚醒,就有nfs服務了




# rpcbind
# nfsd -u -t -n 4
# mountd -r



如果有編輯/etc/exports設定,就叫mountd重新讀取




/etc/rc.d/mountd onereload



如果有要lock服務免得多人同時存取造成錯亂,就在/etc/rc.conf加入




rpc_lockd_enable="YES"
rpc_statd_enable="YES"



接下來用showmount –e $host來檢查,是不是真的成功了。



ubuntu裝法也不難,就加兩個套件




apt-get install nfs-common nfs-kernel-server




然後編輯/etc/exports



一樣借用啟動程序




/etc/init.d/nfs-kernel-server start




ok,這樣就搞定了。

2009年7月14日 星期二

Ubuntu Linux Box – Serial Console

Origin : http://www.debuntu.org/how-to-set-up-a-serial-console-on-debian
首先確認你自己的系統上面有沒有ttyS0

$ dmesg | grep tty
[    4.702353] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    4.702511] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[    4.703397] 00:0e: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    4.703687] 00:12: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

這表示你的Serial Port可以衝到最高16500Bps的速率。當然,這前提是,你的box有顯示卡,或者,你可能已經正在用Serial Console,如果你只是先在別的環境下安裝系統,這指令可能沒啥幫助。

第一步驟,叫getty開始去監聽ttyS0,ubuntu新版作法是編輯/etc/event.d/ttyS0

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/getty -L 115200 ttyS0 vt102



或者,你也可以偷抄襲tty0。



較舊的Debian要修改inittab




T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100



然後重起init



 



第二步驟,修改Grub啟動參數



首先讓grub認識ttyS0,加入下面介紹



# Enable console output via the serial port. unit 0 is /dev/ttyS0, unit 1 is /dev/ttyS1...
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=7 serial console


然後再核心啟動參數後面加上




console=ttyS0,115200n8 console=tty0



好啦,這樣就完成了。如果你發現你的老電腦居然沒有115200Bps HiSpeed,那,參數自己往下降到57600、38400試試看,重點是,Null Modem兩端協定要一樣,不然,亂碼看不懂。