2010年3月24日 星期三

Ubuntu + Shorewall + dnsmasq = NAT

撇開在台中的機器硬碟可能掛掉不說,
買了新的KVM,整理好同事捐贈的機器,
Acorp的準系統,主機板是4S661QP,
台灣的網頁已經把所有準系統相關的資料都拿掉了,
看樣子它變孤兒了= =

買了兩顆CPU,P4 2.4G/533、P4 2.4G/800 HT
沒想到我的NB最高只能吃到533,這顆FSB800的P4就給準系統用了Orz

我自己的電腦也升級了,
空出的SATA卡也裝上準系統,
掛了一顆IDE 40G + 有點壞軌的SATA 160G,
作Software Raid,目前穩定運作中。
只是沒想到,我Raid才弄好,台中的硬碟就不等我先走Q.Q
等硬碟拿到手要再做最後的努力,
說不定是我哥搞烏龍= =

Ubuntu Server裝好,相關的Service也設定告一段落,
只是想放AP,AP卻在台中,
既然就拿準系統當Server用了,
那就順便弄個NAT吧:)


作業系統:Ubuntu Server
防火牆、Router Service:Shorewall
DHCP、DNS:dnsmasq

選擇Shorewall主要的原因如下
  1. 設定簡單,起碼比iptables簡單= =
  2. Command Line Interface,因為Ubuntu Server預設沒有安裝Xwindow
  3. 資源中等,起碼找的到一些中文資料

參考:
筆記:使用shorewall和dnsmasq在Ubuntu架設簡單的NAT
[ubuntu]設定 shorewall 3.x
Basic Two-Interface Firewall


環境:
我只有一張網卡,因為唯一一條PCI拿來插SATA介面卡,
所以實體網路跟區域網路不做實體隔離,
反正用戶單純,我可以自己掌控。
loc:eth0
net:ppp0

步驟如下

  1. 首先安裝shorewall跟dnsmasq
    sudo apt-get install shorewall dnsmasq
  2. 將機器先設定為固定的IP
    編輯/etc/network/interfaces
    auto eth0
    iface eth0 inet static
    address 192.168.0.254
    netmask 255.255.255.0
    sudo /etc/init.d/networking restart
  3. ubuntu安裝shorewall之後,/etc/shorewall這個資料夾會是空的,所以要手動複製設定檔
    sudo cp /usr/share/doc/shorewall-common/default-config/* /etc/shorewall/
  4. 因為要設定成兩個介面的NAT,所以接著複製軟體提供的預設範本
    sudo cp /usr/share/doc/shorewall-common/examples/two-interfaces/* /etc/shorewall/
  5. two-interfaces預設為三個區域,分別是fw、net、loc,
    接著要為這幾個區域分別指定裝置,修改interfaces
    #ZONE INTERFACE BROADCAST OPTIONS
    net ppp0 detect dhcp,tcpflags,routefilter,nosmurfs,logmartians
    loc eth0 detect tcpflags,nosmurfs,dhcp
    (如果要在同一台機器上跑DHCP Server,要增加dhcp這個設定)
  6. 接下來,修改policy,設定不同區域之間的連線規則
    因為這台機器上跑Ubuntu,還要連網路更新,
    將$FW net REJECT info 改成$FW net ACCEPT
    這規則應該不難理解:)
  7. 設定開啟的服務,或是設定防火牆的例外規則,修改rules
    SSH/ACCEPT net $FW
    Web/ACCEPT net $FW
    DNS/ACCEPT net $FW
  8. 其他設定:
    /etc/default/shorewall
    STARTUP=1
    /etc/shorewall/shorewall.conf
    STARTUP_ENABLED=Yes
    SUBSYSLOCK=/var/lock/subsys/shorewall
    我安裝的shorewall的版本有這個錯誤,設定的這個Path不存在,會有錯誤
    解決方法:
    將路徑指向實際存在的目錄,例如SUBSYSLOCK=/var/lock/shorewall

  9. 最後~
    sudo shorewall start 啟動
    sudo shorewall stop 關閉
    sudo shorewall restart 重新啟動
    sudo shorewall clear 清除規則
    啟動shorewall,這個時候shorewall附帶的SNAT應該也開始運作了,
    找一台電腦,手動指定IP,設定在同一個網段底下,Gateway指向Server,
    分別Ping Server跟Ping外部IP,看NAT是否有正常運作

如果NAT正常,
接著再來設定dnsmasq,

  1. 修改/etc/dnsmasq.conf,加上:
    interface=eth0
  2. sudo /etc/init.d/dnsmasq restart
基本上,我應該只有改這個= =
測試DHCP跟DNS,
DHCP如果撈不到回應,回頭檢查shorewall的dhcp option有沒有加,
DNS直接使用nslookup去做指定伺服器查詢,
看有沒有回應正確的IP正解。

如果都正常,
基本這台機器就算是IP分享器了,
有機會再來裝無線網卡當AP用,
該趕一點報告了,火燒屁股了說Orz

2010年3月22日 星期一

SIS900網路卡在Linux下無法連線?!

這兩天在同事捐贈的機器上安裝Ubuntu Server碰到的問題,
OS抓不到SIS900的Mac address,下指令ifconfig -a會出現SIS900這個裝置,
但是在HWaddress的欄位是FF:FF:FF:FF:FF:FF或00:00:00:00:00:00,
然後網路怎樣都連不上去= =

如何驗證?
  1. lspci 確認是否有出現SIS900這個device,沒有的話請檢查BIOS或是硬體
  2. lsmod 確認是否有SIS900這個module,沒有的話代表沒抓到或是沒驅動
  3. dmesg|grep eth 有出現對應的訊息?
  4. ifconfig -a 有出現SIS900這個chip但hwaddress的值是錯誤的?

解決方法
編輯/etc/network/interfaces
指定Mac address
例:
#auto eth0
iface eth0 inet dhcp
hwaddress ether 00:E0:18:B3:A0:F7

需要注意事項
hwaddress前面需要加個tab
如果機器在實體網路上,需要考慮Mac address衝突的問題,
但如果是在虛擬網段,同網段沒有重複編號的網卡就沒有這個問題,
或是想辦法寫入實際的網路卡Mac address,
例如從Windows底下看?

2010年2月13日 星期六

CHT 3G Test

去年回外婆家用的是威寶的無線上網,
(威寶電信3G行動上網實測(雲林大埤))

今年的選擇比較多一些,
中華電信也推出日租型的無線上網服務,
不過這是另外拿到一張SIM卡,需要用額外的3G裝置上網,
另外比較新的選擇是3G行動上網計時型
兩天內使用20小時收費99元,五天內使用60小時收費199元,
相較之下算是方便並且蠻划算的...

同樣的地點...

同樣來做測試看看~
下載~

mosquito@mosquito-laptop:~$ wget http://download.cds.hinet.net/?7ADAEC3FA63D71699D6D90DDBD4704DC040B
--2010-02-13 20:40:32--  http://download.cds.hinet.net/?7ADAEC3FA63D71699D6D90DDBD4704DC040B
正在查找主機 download.cds.hinet.net... 202.39.225.142
正在連接 download.cds.hinet.net|202.39.225.142|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 10503578 (10M) [application/save-as]
Saving to: `index.html?7ADAEC3FA63D71699D6D90DDBD4704DC040B'

100%[======================================>] 10,503,578  43.1K/s   in 6m 19s

2010-02-13 20:46:52 (27.0 KB/s) -- 已儲存 ‘index.html?7ADAEC3FA63D71699D6D90DDBD4704DC040B’ [10503578/10503578])

mosquito@mosquito-laptop:~$

上傳:

mosquito@mosquito-laptop:~$ ftp ftp.adsl.hinet.net
Connected to ftp.adsl.hinet.net.
220 Welcome to HiNet Speed Test Server!
Name (ftp.adsl.hinet.net:mosquito): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd uploads
250 Directory successfully changed.
ftp> put index.html?7ADAEC3FA63D71699D6D90DDBD4704DC040B
local: index.html?7ADAEC3FA63D71699D6D90DDBD4704DC040B remote: index.html?7ADAEC3FA63D71699D6D90DDBD4704DC040B
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.
10503578 bytes sent in 252.71 secs (40.6 kB/s)
ftp>




上傳比下載大...這是怎樣= =?

封包反應速度...

--- ptt.cc ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99110ms
rtt min/avg/max/mdev = 152.399/247.123/442.212/43.163 ms


--- 168.95.192.1 ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99014ms
rtt min/avg/max/mdev = 217.917/231.943/282.014/13.210 ms

傍晚的時候測試的效果頗不穩...
不過就在剛才跑出來的反應時間倒還可以接受?
這種東西就是方便用的,
對於品質,也不能要求太多了~