本篇為log...
如果辦公室有擋特定網頁或是即時通訊軟體,如果不算現在正流行的3G網卡(在地下室就收不到訊號了),通常的解決方式是拿家裡的一台電腦來裝VPN server或是用putty開個tunnel做跳板,我因為懶得研究VPN server怎麼設定,所以決定採用我熟悉的putty~
已經有很多網頁在說明如何設定putty,所以就不浪費網路資源了:
http://cha.homeip.net/blog/archives/2006/01/putty_ssh_tunne.html
但是除了設定putty外,要拿來當跳板的電腦還要有個proxy,這個部份也已經有很多網頁說明:
http://www.ubuntugeek.com/how-to-setup-transparent-squid-proxy-server-in-ubuntu.html
當proxy server安裝設定完畢,putty也設定好之後便可利用跳板自由的瀏覽網頁&使用msn,而且還不需要擔心被竊聽,但是前提是port要有開。。。
所以最後要再加個簡易的掃port教學網頁:
http://www.cyberciti.biz/faq/linux-port-scanning/
Search Google
Saturday, July 25, 2009
putty tunnel
Tuesday, June 30, 2009
山不轉路轉
上一篇寫到要如何用Network Namespaces + Vconfig來做到只用一台電腦與一張PCI網卡就可以監控使用相同IP網段的多個VLAN,結果發現從獨立namespace發出帶有VLAN ID的封包始終無法成功的送到網路上,經過整整一個星期的思考,在iptables & ip route之間穿梭,卻找不到一個可以把封包丟出去的方法。。。
在我勤奮不懈的努力之下,洗澡的時候忽然有個"Multiple routing table"的想法閃過腦中,於是踏出浴室之後馬上google Linux是否有這種東西&要怎麼用,話說天救自救者,就這樣給我試出來了,哇哈哈哈!
有興趣的人可以用下面的script試一下:
+--NS2:------------------------------------------------
./ns_exec -nm -- /bin/bash
echo $$
+------------------------------------------------------
+--NS3:------------------------------------------------
./ns_exec -nm -- /bin/bash
echo $$
+------------------------------------------------------
+--NS1:------------------------------------------------
ip link add type veth
ip link add type veth
ip link set veth1 netns 1691
ip link set veth3 netns 1704
ifconfig veth0 192.168.0.1/24 up
ifconfig veth2 192.168.2.1/24 up
vconfig add eth0 11
vconfig add eth0 33
ifconfig eth0.11 10.0.0.11/24 up
ifconfig eth0.33 10.0.0.33/24 up
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
ip rule add from 192.168.0.2 lookup 102
ip rule add from 192.168.2.2 lookup 122
ip route add default via 10.0.0.11 dev eth0.11 table 102
ip route add default via 10.0.0.33 dev eth0.33 table 122
+------------------------------------------------------
+--NS2:------------------------------------------------
ifconfig veth1 192.168.0.2/24 up
ip route add default via 192.168.0.1 dev veth1
+------------------------------------------------------
+--NS3:------------------------------------------------
ifconfig veth3 192.168.2.2/24 up
ip route add default via 192.168.2.1 dev veth3
+------------------------------------------------------
+--NS1:------------------------------------------------
tcpdump -ne -i eth0 not port 22
+------------------------------------------------------
tcpdump擷取到的封包資訊:
[root@vmf11 ~]# tcpdump -ne -i eth0 not port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:51:41.882589 00:0c:29:56:fb:d3 > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 11, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.11
10:51:42.326170 00:0c:29:56:fb:d3 > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 33, p 0, ethertype ARP, arp who-has 10.0.0.10 tell 10.0.0.33
看到了嗎?
問相同IP地址的封包被加上不同的VLAN ID了!
Tuesday, June 23, 2009
Linux Container (Network Namespaces) + 802.1q (vconfig) + screen
今天要作筆記的對象是Virtual VLAN interface,虛擬化已經從最早的虛擬電腦(Vmware/Virtual PC/Qemu/Virtual box/Xen/KVM...etc)演進到虛擬switch(Virtual route forwarding enabled switch),虛擬的的Network interface其實也存在好一陣子(eg. IP alias),不過虛擬的VLAN interface倒是很少見。
雖然在2004年有人寫了個linux-vrf的patch,讓我們在Linux下可以透過chvrf這個工具指定某個process要透過哪張虛擬的VLAN interface對外丟封包,只不過該patch只支援到2.6.8版的Linux kernel(等同於Fedora Core2時代),那麼新版的Linux用戶該怎麼辦呢?沒關係,待我細細道來。
首先要先介紹Linux Container&802.1q support in Linux kernel。
簡單來說Linux Container是用來讓每個process有獨立的作業空間,這裡我們只用到獨立network interface的功能,802.1q support in Linux kernel則是讓使用者有能力創建支援VLAN tag的network interface,因此把這兩個功能相加之後便可以達到虛擬VLAN interface的功能,下面兩個連結有更詳盡的說明與tutorial:
Linux Container
Linux Container configuration guide中所提到的ns_exec工具可以用下面指令取得:
git clone git://git.sr71.net/~hallyn/cr_tests.git
802.1q support in Linux kernel
看完上面兩個連結之後,我們知道怎麼為各作業空間建立獨立的virtual network interface,也知道怎麼建立能夠發出帶有VLAN tag封包的virtual network interface,但是,如果我們想要用一台主機跟多個VLAN裡面的設備溝通時該怎麼辦呢?
答案就是在建立完veth之後再用vconfig在veth上面另外長個VLAN tag enabled network interface!
設定可以參考下面的script,這個例子用到screen來達到完全自動化(while-loop裡面可以再改進),在一般bash shell下執行script,而script中使用screen -X下達指令的對象為另一個bash shell中的screen,而兩個bash shell都必須使用root登入:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
ip link add type veth
ifconfig veth0 192.168.0.101/24 up
route add -host 192.168.0.102 dev veth0
echo 1 > /proc/sys/net/ipv4/conf/veth0/proxy_arp
screen -X stuff './ns_exec -nm -- /bin/bash'
screen -X eval 'stuff "\015"'
sleep 1
screen -X stuff 'echo $$ >> pid'
screen -X eval 'stuff "\015"'
val=1;
while read line
do
echo $val $line;
veth=veth$val;
ip link set $veth netns $line;
#cmd='ifconfig veth1 192.168.0.102/24 up';
#echo $cmd;
#screen -X stuff $cmd;
screen -X stuff 'ifconfig veth1 192.168.0.102/24 up';
screen -X eval 'stuff "\015"'
screen -X stuff 'vconfig add veth1 11';
screen -X eval 'stuff "\015"'
screen -X stuff 'ifconfig veth1.11 10.0.0.1/24 up';
screen -X eval 'stuff "\015"'
screen -X stuff 'ip route add default via 192.168.0.102 dev veth1';
screen -X eval 'stuff "\015"'
val=`expr $val + 2`;
done < "pid"
echo finish startup
Saturday, June 13, 2009
Wednesday, April 01, 2009
檔名過長怎麼辦?
今天遇到個很機車的問題,因為檔案名稱/路徑過長而無法刪除,試著rename但是連rename都失敗,如下:
C:\Program
Files\IBM\WebSphere\AST\updater\workspace\proxies\eclipse\features\up
dater.ast.fixpack.constellation.1005_1.0.0\backup\files\eclipse\plugins\com.ibm.
datatools.db2.luw.serverdiscovery_1.0.0.v200610132104\com\ibm\datatools\db2\luw\serverdiscovery>move model* a
檔名或副檔名太長。
還好找到這篇blog解救了我,始用到的是方法三:
方法3
首先先挑一個沒在用的磁碟機編號,例如 T
subst T: .
T:rename "thisisafuckinglongfile andyoucantopenit.jpg" new.jpg
C:
subst T: /d
注意第一行最後一個字元是 .
代表現在的資料夾這樣一來路徑就縮到最短了再執行rename最後一行是關掉虛擬磁碟
Tuesday, February 03, 2009
Oracle 10g and SQuirrel SQL
是的,今天要討論的是題目就是建立Oracle 10g database然後用免費的SQuirrel SQL連線進行檢視或修改。
安裝Oracle 10g十分容易因此不在這裡贅述,唯一要說明的是只要安裝Oracle 10g即可,不要勾選"建立起始資料庫",這樣可以節省不少空間。
安裝完之後點選
[開始] -> [所有程式] -> [Oracle - OraDb10g_home1] -> [組態設定核轉移工具] -> [資料庫組態輔助程式] (aka. DBCA)
有了這個幫手讓建立資料庫不再是難事,google上有很多介紹如何使用command line建立資料庫的連結,實際上跟著做過之後就會發現其實手續十分繁雜~
花點腦筋依序按下"下一步"之後資料庫就建立好了,這裡要注意的是請記得SID,之後的很多地方都會用到。
資料庫建立好了不代表我們現在就可以連到資料庫,接著我們需要建立並設定Network Listener(網路監聽器)。
請點選
[開始] -> [所有程式] -> [Oracle - OraDb10g_home1] -> [組態設定核轉移工具] -> [網路組態輔助程式] (aka. NETCA)
我們需要執行"網路組態輔助程式"兩次,第一次設定網路監聽器,第二次是設定區域網路服務名稱,在兩次的組態過程中請在"網路監聽器"與"服務名稱"中填入SID。
接著follow下面的link設定SQuirrel SQL。
http://www.norgesinternettforum.no/archive/index.php?t-1935.html
quote:
1. add the oracle driver其中有幾個地方可以修改一下:
drivers > new driver
click on the Extra Class Path tab and press the button Add
browse to find the file on your hard drive called ojdbc14.jar
on my machine i had it in the weblogic installation directory, here:
/usr/bea/weblogic81/server/lib
Name: oracle 9 driver
Example URL: jdbc:oracle:thin:@10.0.0.150:1521:myoracledb
Website URL: http://oracle.com
Class Name: oracle.jdbc.driver.OracleDriver
the italicized texts are up to you what you write there. i got our information from this file on our bea server:
/usr/bea/user_projects/domains/myapp/config.xml
2. make the connection
aliases > new alias
Name: oracle 9 driver connection
Driver: (choose oracle 9 driver from the dropdown list)
User name: scott
Password: tiger
OK
highlight oracle 9 driver connection in the alias window and push the connection button or do the keyboard combination control+o
push the connect button
- "Oracle Thin Driver"即可,不需要新增一個新的driver名稱。
- 連線的時候把User Name從連結中的scott改成system,密碼就是建立資料庫時輸入的密碼。
連上資料庫之後到SQL tab使用create user與grant user的SQL指令新增資料庫的使用者,
或者如下面link的第一項。
http://life.iiietc.ncu.edu.tw/xms/forum/show.php?id=3337
quote:
1.login user: system
(1) --建立一個user名稱test01(CREATE USER test01)密碼預設為test01(語法:IDENTIFIED BY test01)
CREATE USER TEST01 IDENTIFIED BY test01 ;
(2) --賦予test01可以連接資料庫的權限
GRANT CREATE SESSION TO test01;
(3) --建立一個user test02,且賦予連線權限
CREATE USER TEST02 IDENTIFIED BY test02 ;
GRANT CREATE SESSION TO test02;
但是重點是以下這一行:
grant connect, resource to username;
[20090224]再更新一下:
ORACLE用ORACLE_SID來指定要連接到哪個DB,所以在下connect之令之前要記得先設定ORACLE_SID,在Linux的bash中用export,在Windows的"cmd"中用set。
做完這一系列的設定之後深深地發覺。。。Apache Derby在設定與使用上真是太簡單了!
Saturday, January 31, 2009
vmware-vdiskmanager -- final
避免昨天參考的連結哪天突然變成broken link,今天還是決定上來做個筆記:
[vmware-vdiskmanager的完整路徑] -x [擴充後的容量]GB [VMDK的完整路徑]
// [擴充後的容量]並不是所有的數字都可被接受,例如昨天我放20失敗,改用21嘗試後便成功
檢查/dev/下面是不是有新的sda#,sdb#,或是類似的裝置出現,接著將新增的裝置帶入下面的指令中
fdisk /dev/sda
在console的互動環境中建立新的partition(n)並將filesystem type改成LVM適用的8e,完成後
先將改變存回partition table中(w)再離開
// #為數字
// 如果直接輸入fdisk得到查無指令的訊息,請在前面加上/sbin/再試試看,以下的指令都適用
重新開機 or 執行partporbe(就不需要重開機)
pvcreate /dev/sda#
vgextend VolGroup00 /dev/sda#
// VolGroup00可能是其他名字,請執行vgdisplay然後檢視VG Name欄位
lvextend -L +XXG /dev/VolGroup/LogVol00
// 這裡的XX就藏在執行vgdisplay後得到資訊中的Free PE / Size欄位中
// 另外LogVol00請執行lvdisplay然後哪個VG Name所對應到的LV Size與原來的磁碟空間相符合
resize2fs /dev/VolGroup00/LogVol00
// 結束之後請執行df -h確認空間擴充完畢
最後做個總整理,順序是很重要的!
- vmware-vdiskmanager -->
先增加實體的檔案空間,可能是pre-allocate可能不是,但是先讓vmware知道image的limit(可以說是存取範圍)在哪裡,這個步驟跟在電腦上加個新硬碟是一樣的意思 - fdisk -->
加上新硬碟之後就要先幫新硬碟規劃partition(磁區) - pvcreate -->
告訴linux現在系統中多了新的磁區(physical volume) - vgextend -->
用新的磁區擴充現有的volume group - lvextend -->
擴充邏輯空間,單純設定新的存取範圍(logical volume) - resize2fs -->
在filesystem中將新的磁區真正納入logical volume所涵蓋的範圍
Friday, January 30, 2009
vmware-vdiskmanager -- continued
昨天使用vmware-vdiskmanager增加vmware image的容量之後其實事情還沒有結束,因為對於Linux來說有用的磁碟空間仍舊沒有改變,因為我採用LVM的方式規劃硬碟,所以參考了下面兩個連結完成增加vmware disk space的後續動作:
- http://www.global-domination.org/forum/viewtopic.php?t=750&sid=4b727581d6dbb199087becdd4c9fb31c
- http://www.swizzling.org/2008/04/01/expand-lvm-disk-on-linux-in-vmware/
- 第一個連結中寫到"Add *n*ew partition 3 as primary, change to LVM *t*ype (8e) ",這裡將新增的partition編號設定為"3",原因是fedora已經把1 & 2都用掉了~,其實如果四個ID都用完了也可以新增為extended,primary與extended的差別只在於extended不能開機。
- 第一個連結與第二個連結的最後一個步驟分別使用了"ext2online"與"resize2fs"指令,經過實驗之後只有"resize2fs"才能適用於fedora。
增加vmware image size前
[root@localhost test]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 6.2G 3.0G 2.9G 51% /
/dev/sda1 190M 14M 167M 8% /boot
tmpfs 378M 0 378M 0% /dev/shm
增加vmware image size後
[root@localhost test]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 19G 3.0G 16G 17% /
/dev/sda1 190M 14M 167M 8% /boot
tmpfs 378M 0 378M 0% /dev/shm
PS. 原來fedora 9之後就可以直接寫NTFS格式的硬碟了!
Thursday, January 29, 2009
vmware-vdiskmanager
之前在vmware中裝了個測試平台專門用來處理資料庫相關的嘗試與測試作業,隨著raw data與日俱增,原先設定為20G的vmware disk也不太夠用,google之後發現了增大已存在的vmware disk空間的指令與用法,現在趕快寫下來備忘一下:
"c:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe" -x 42.0Gb "c:\Virtual Machines\Red Hat Linux\Red Hat Linux.vmdk"其中的-x 42.0Gb指的是希望將原先的vmware disk增加到42Gb
PS. 要注意的是這個指令只能用在增加vmware disk上,想減少?抱歉,辦不到!儼然就像要變胖的人瘦回原先的樣子一樣 @@