[轉貼] linux使用wget透過proxy抓取檔案

  
所以在linux使用wget抓取檔案,若要透過proxy 必須如下:

vi /etc/wgetrc,找到以下兩行,並將以下參數

 #passive_ftp = off <- 是否關閉 passive mode
 #http_proxy = http://163.28.80.40:3128/ <- 設定台中區網的 proxy ip

 前面的 # 刪除後,修改為

passive_ftp = off
http_proxy=http://163.28.80.40:3128/
ftp_proxy = http://163.28.80.40:3128/
use_proxy = on

存檔後再用 wget 抓檔就會比較快了

[分享] Synergy–讓你一組鍵盤滑鼠在二台電腦間遊走

就如同標題所述,對於我這種同時使用筆電和桌電的人真的是一大福音

Synergy這個軟體,大家對他的介紹都是軟體KVM,一組鍵盤滑鼠共用多台電腦。
我對他的解釋,不如說是一個沒有畫面的遠端操控軟體。

對於一個人同時使用二台電腦時候,如美工人員或是系統管理師,這真的可以派上用場
用起來好像是延伸桌面,但是是二台電腦幫為你服務

對於正在使用Linux學習的使用者也很方便,XP下打開文章,另一邊打開Terminal,可以同時看文章和操作
文章看到的指令,複製一下,滑鼠拉過去,就可以貼到Terminal了,真的是超方便的。

 

我很久以前就有想過可以寫這種軟體,還搭配傳檔….等等(好啦離題了。)

主要特色:

  • 利用網路達到鍵盤滑鼠共用 (一台鍵盤/滑鼠操控二台電腦,前提是二台電腦都要有螢幕)
  • 剪貼簿共享 (A電腦複製,B電腦貼上)
  • 同步進入螢幕保護程式,也可以同時被喚醒(只在同OS下才適用)
  • 可以跨平台(Win7、XP、Mac、Fedora、Ubuntu、CentOS….等等的Linux)
  • 免費,自由軟體

唯一個小小的缺點,就是不能傳檔 (A電腦的檔案直接拉到B電腦),不過可以用網芳….等等方法去解決。

還有不適合一套電腦操作一台「主機」,連螢幕都沒有,或是一台電腦不在你面前(電腦在機房)
這樣的話,遠端操控軟體 (例如:XP的遠端桌面、VNC….等等)會比較適合你。


設定方法:

你插鍵盤滑鼠的那台電腦為Server,其餘為Client

以我的例子

我的電腦左邊是Fedora桌機,插著鍵盤滑鼠
右邊則是筆電

Fedora Linux的設定方法

打開Terminal打入指令

yum install synergy quicksynergy -y

等待安裝完成

在Appliccations → Internet → QuickSynergy

 Screenshot-1.png   

依畫面打入其相對位置的電腦名稱,然後按Execute

(XP的話在我的電腦右鍵→內容,在電腦名稱的頁籤裡)

Screenshot-QuickSynergy.png

防火牆記得要打開 TCP 24800 連接埠

以下是防火牆設定

System → Administration → Firewall

Screenshot-2.png

第一個對話框可以不用理他,然後打入root的密碼

 Screenshot-3.png

 

在其左邊選擇 Other Ports,右邊按下Add

把User Defined打勾,在Port / Port Range打入24800,Protocol選擇TCP,然後按OK

Screenshot-4.png

 最後按Apply存檔

 


 

XP的話直接到以下網址去下載

http://sourceforge.net/projects/synergy2/files/Binaries/1.3.1/SynergyInstaller-1.3.1.exe/download

然後安裝起來

打開Synergy,會有我類似的圖,在這個Client中打入IP位址 (也可以打Linux的HostName拉,只是比較不容易找到就是了)

 2010-05-30 14 31 48.png

然後按下Test測試看看,有

NOTE: connected to server

字樣代表連線成功,然後再滑鼠滑到螢幕邊界看看,理論上應該可以從另一台螢幕出來

Screenshot.png

這樣就成功了

 

 

 

參考資料:

http://qwweee7467.spaces.live.com/Blog/cns!A4205F53E9B9B1B4!905.entry
http://hohayo.pixnet.net/blog/post/25718509
http://blog.ssh.tw/?p=344
http://synergy2.sourceforge.net/

[linux bash] 建立格式化過的Shell Script

#!/bin/bash
#————————————
#Time:2010/05/03 22:41
#Author:Johnny
#Comment:建立一個屬於自己格式的Shell Script
#————————————

# 檢查參數是否足夠
[ “$#” -lt 1 ] && echo “ERROR: Missing arguments (less than 1).” \
        && exit 0

# 檢查檔案是否存在,不存在就建立
if [ “$(cat $1)” == ” ]; then
echo “File Created.”
else
echo “ERROR: File exist.” && exit 0
fi

# 建立其檔案內容(註:中間的註解也會被寫入,中間可以修改作者的名字)
cat > $1 <<end
#!/bin/bash
#————————————
#Time:$(date +%Y)/$(date +%m)/$(date +%d) $(date +%H):$(date +%M)
#Author:Johnny
#Comment:
#————————————
end
# 該屬性更改為可執行的檔案
chmod +x $1

我在這裡解釋一下這要怎麼用

將其存成mksh,可以直接放在/bin下

就可以直接打

$ mksh test.sh

就會有一個自己格式的shell script了

$ cat test.sh

#!/bin/bash
#————————————
#File:test.sh
#Time:2010/05/03 23:35
#Author:Johnny
#Comment:
#————————————

[Fedora12] 一些雜項設定

WindowsXP和Fedora的時間不同步

Screenshot.png 

WindowsXP和Fedora 12 linux的雙系統環境下,時間一直會不同步? 

(XP下使用正常,但切到Fedora後時間雖然正確,但回到XP後時間就會差8個小時)

http://hi.baidu.com/wyl0367/blog/item/8333cdfa0a82de9e58ee90cd.html

原因在於BIOS的時間沒有存時區,而Fedora預設會以UTC時間存到BIOS裡

「系統」→「管理」→「時間和日期」→「時區」,把UTC的勾去掉,就行了

System -> Administraton -> Date & Time

Time Zone頁籤下,System Clock uses UTC 勾勾取消


新酷音的符號輸入方法

引用:http://briian.com/?p=404

 Linux下開啟新酷音輸入法請見:http://j796160836.pixnet.net/blog/post/25444345

Screenshot-IBus Preferences-1.png  

當我們用「新酷音輸入法」在輸入中文字時,可以按一下鍵盤上左上角的「~」按鍵,便可出現剛剛設定的特殊符號選單,我們可以用鍵盤上下左右鍵來選擇想要輸入的符號。(空白鍵換頁)

建議鉤上幾個選項

自動移游標,這選項才會和新注音的感覺差不多,要刪預先字時才不會刪錯

Esc鍵清理預編區

輸入風格可以依照喜好來設定


開機自動打開Numlock

引用:http://www.linuxquestions.org/questions/fedora-35/numlock-key-turn-on-420427/

可以裝一個很簡單的套件numlockx

numlockx.i686 : NumLockX turns on NumLock after starting X

 

YUM掛Proxy下載套件

引用:http://www.fedoraforum.org/forum/showthread.php?s=&threadid=7

修改yum.conf

vi /etc/yum.conf

在裡面加入一行

http_proxy=http://strong>user:passwd@proxy.foo.com:portnumber

上述的

user為帳號,passwd為密碼,proxy.foo.com為proxy的位址,portnumber為連接埠號

  

[轉貼]XP關閉自動播放

本文轉自:http://labors3cweb.pixnet.net/blog/post/27247064
http://security.sinica.edu.tw/infosec-web/topicdetail.jsp?id=&f=7&t=562

還有其他方法可供參考,只列出最有效的方法

 

電腦管理服務設定

方法:開始->控制台->系統管理工具->服務,或 開始->我的電腦->右鍵->管理->電腦管理

停用 Shell Hardware Detection

 

電腦管理服務設定  


MountPoints2機碼編輯設定

方法 1:

開始->執行->輸入 regedit ->登錄編輯程式

找到 HKEY_CURRENT_USERSoftwareMicrosoftWindows
CurrentVersionExplorerMountPoints2,將其安全性權限加入everyone,並在「完成控制」給予拒絕的設定

MountPoints2機碼編輯設定MountPoints2機碼編輯設定 2

方法 2:

使用安裝subinacl.msi

編輯以下指令,並存為 denyauto.bat

cd C:Program FilesWindows Resource KitsTools
SublnACL /subkeyreg
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /deny=everyone=f

編輯以下指令,並存為 grantautu.bat

cd C:Program FilesWindows Resource KitsTools
SublnACL /subkeyreg
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /grant=everyone=r

執行 denyauto.bat 阻斷 autorun.inf執行。

執行 grantautu.bat 恢復 autorun.inf執行。

 

 

[轉貼]永久修改Windows系統環境變數

本文節錄自:http://demonchang.blogspot.com/2007/08/modify-system-environment-variables-on.html 

修改Windows系統環境有很多種作法,如下:

  1. 最簡單也最直接的就是利用Windows自己本身的修改方式,在桌面的”我的電腦(My Computer)”上按滑鼠右鍵→”內容(Properties)”→選擇”進階(Advanced)”的Tab→點下”環境變數(Environment Variables)”的按鈕,再找到自己要修改的環境變數上,點滑鼠左鍵兩下就可以修改了。(以上為XP使用,但其他的系統也差不多)
  2. 利用Windows內建的GUI程式修改,點下左下角的”開始(Start)”→”執行(Run)”,輸入”msconfig”,就可以利用msconfig進行修改。
  3. 利用安裝程式來進行系統環境變數的修改,可用InstallShield此類的程式來做到。
  4. 利用batch file的執行方式來修改系統環境變數,因為這就是我所選擇的方式,所以接下來會稍微介紹如何使用batch file來修改環境變數。

以往我們在利用batch file設定環境變數的時候,通常是用set這個指令來做設定,語法如下:

set 變數名稱=變數內容

但是用set所修改的環境變數內容效用範圍僅止於執行程式的DOS視窗,其他重新開啟的DOS視窗都沒有辦法取得此修改後的變數內容,更不用說其他的程式了。所以如果要永久的變更系統環境變數的話,那就只能透過修改註冊表(registry)的參數內容了。要修改的地方就是在[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]之下,有各個變數的名稱及對應的內容,只要對內容進行修改,就可以達到永久修改變數內容的結果。

以設定JAVA使用的環境變數故可以使用機碼方法,會較優
改天寫成BAT檔

至於要設定甚麼變數,可參考
http://blog.yam.com/carl44/article/19949683

[分享]終極PPT講義轉檔

  2010-04-07 11 48 22.png

印講義還在使用PowerPoint的講義模式嗎?
如何要讓你印出的PPT講義能夠一次塞更多頁且減少間距,仍夠讓字體更大更清楚
而且步驟不難,使用的軟體都是免費軟體唷

 

 

 

 

 

 

所需軟體

Adobe reader (本文是使用9.20)
看PDF都會用的軟體,這次使用其每張紙列印多頁的功能
官方下載:http://get.adobe.com/tw/reader/
軟體王下載:http://www.softking.com.tw/soft/download.asp?fid3=11064

PDF Creator (本文是使用0.99)
本文的主角,是個PDF虛擬印表機,可以以此來製作PDF轉檔
只要能以印表機出的東西,都可以利用這軟體轉成PDF

軟體說明:http://briian.com/?p=487

官方下載:http://sourceforge.net/projects/pdfcreator/files/PDFCreator/PDFCreator%200.9.9/PDFCreator-0_9_9_setup.exe/download

因部分公用電腦在安裝PDF Creator時會重開機
此時可以使用doPDF
效果一樣,建議使用PDF Creator較穩定

官方下載:http://www.software112.com/products/dopdf-free-pdf-converter+quick-download.html
軟體王下載:http://www.softking.com.tw/soft/download.asp?fid3=24555

 

請看以下教學

2010-04-07 11 31 35.png 

打開我們要的PPT檔,然後按列印

 2010-04-07 11 41 00.png

照平常列印設定一樣,只是印表機選PDF Creator,然後照圖片設定雜項設定

選項  配合紙張調整大小一定要勾,否則失去其意義 

彩色/灰階的項目有:

彩色,看到即所印
灰階,會把所有的彩度去除,據經驗,部分的文字方塊會無法顯示
黑白,去除背景只剩文字,部分的圖片會無法顯示

建議選擇彩色

選項 投影片加框是會較美觀,依個人喜好勾選

 

2010-04-07 11 43 13.png

 紙張大小:A4 列印品質:96dpi 是為了要縮小檔案大小

實驗發現,這裡修改紙張大小和列印品質的關係

雖然這裡設成 紙張大小:A6(A4的1/4部分) 列印品質:300dpi
雖然檔案會較小,但印出來字會糊糊的

 

2010-04-07 11 32 19.png

按下Save選擇欲儲存的路徑,到這步還不是完稿

 2010-04-07 11 36 52.png

結果會自動用Adobe Reader打開(如果沒有請手動開啟)

按下列印

頁面縮放選擇:每張紙列印多頁
每張列印的頁數:2×4

即是一頁印出8張投影片

列印頁面邊框就不用再勾選,否則會有二個框

頁序可以依喜好選擇水平或垂直

 

 

 

 2010-04-07 11 36 56.png

這裡設定回預設值,A4  300dpi

 

 

完成~

 

有些會碰到檔案太大而印表機印不出來,可以將 列印品質 降低試試

還有因為PDF檔案不齊全或檔案過大所以每張紙列印多頁時在PDF Creator列印時有錯誤訊息
可能牽扯到GhostScript版本的問題,我再研究看看其選項

初步知道,如果遇到字體出不來(或是被改動)可以勾選,以影像方式列印

如果遇到列印時有破圖的情形(發生在文字方塊,有透明色的圖片)可以勾選,讓印表機決定色彩

2010-04-07 12 38 35.png

如果仍舊有問題可以調動其他選項試試看

 

 

目前已知問題有  列印緩慢 (黑白雷射印表機要20秒左右才印出一張)
可能也是因品質太高的緣故 

[轉貼]詳解-OpenVPN中的routing

這文章的前半段還有看懂一些,之後的文章就不OK了
備忘起來慢慢看

網路概論我超不熟的啦>”<

 

原文出處http://cheaster.blogspot.com/2009/11/openvpnrouting.html

在網路上有很多教學,會叫你把vpn當做default-route-gateway…但,這樣很容易一失敗就造成server本身外連有問題…如果外連有問題,你想遠端修改都不行…所以,我強烈建議不熟routing是啥東東西,不要太輕易就把server本機的default-route給改掉…

以linux上來看,假設本機實體網路卡eth0使用的ip-address為[192.168.1.1/32][gateway=192.168.1.254],vpn網卡tun0/tap0使用的ip-address為[10.8.0.1/24]/p–t–p[10.8.0.2/24]=gateway,指令[route -n]=表a

表a:
dest/mask,gateway,dev
10.8.0.2/32,0.0.0.0,tun0
10.8.0.0/24,10.8.0.2,tun0
192.168.1.0/24,0.0.0.0,eth0
0.0.0.0/0,192.168.1.254,eth0

上面這一塊,有上過網路管理課程的朋友一定很了解,我就大至上講一下,routing-table就是告訴電腦的封包該往哪走…用白話一點描述就是

  1. 封包-a想去10.8.0.1~10.8.0.255的地方,必須到10.8.0.2的門口排隊
  2. 封包-b想去192.168.1.1~192.168.1.255的地方,必須到0.0.0.0的門口排隊
  3. 不想去上面二個地方,而想去別處的,就通通到192.168.1.254的門口排隊

想去的地方,就是routing-table上的dest(目的地),門口就是gateway,dev指的就是你的實體設備(電腦中叫網路卡)

所以我以vpn+nat的方式來表述一下

vpn-client[10.8.0.10/32]/tun0-vpn-server[10.8.0.1/32]/tun0-vpn-gateway[10.8.0.2/32]
eth0-實體網路[192.168.1.1/32]/eth0-實體網路-gateway[192.168.1.254/32]
表a就是這一台啟動vpn服務的routing-table

以一般我們vpn-server-conf的預設,若無特別設定的話,client端除了本身自有的網路產生的路由表(routing-table),還會因為連上vpn-service時產生的dest:10.8.0.0/24,gateway:vpn_gateway(絕對不會是10.8.0.2/32,因為vpn的gateway是vpn-service去操控的,只要你設定正常…基本上不用理)

所以到這面為止,綜合basic-setting的話,你會發現,vpn只有讓10.8.0.0/24互通而已…也就是client[10.8.0.10]可以連到server[10.8.0.0/24]…這也就是server.conf中client-to-client的用意(不過,不啟用client-to-client也會有這個routing…因為這算是vpn-lan中的default-route…client-to-client只是告訴vpn-service,client們可以互相連繫)

但我用vpn是為了可以方面連到學校內部,因為學校有一些內部的管理只能允許校內ip,所以,vpn就得配合nat的方式出去

在[OpenVPN–純架設-by ssl]的routing/nat/forward做過說明了…所以,在此我就先當做你server端的vpn-input/output/forward/nat已設定在iptables上了…接著,我就來說說怎麼設定routing-table

在server.conf中,你會看到一些用[push “xxxxxxxxxxxxxxxxxx”]的東東,這push的意思就是把後面引號中的東西設定到client去…若你在server.conf看到[xxxxxxxxxxxxxx]沒引號也沒push的話,那代表是設定在server上…以上我舉幾個例子

a—[讓vpn-client可以透過vpn的tunnel連到學校192.168.10.0/24區域]

在server.conf寫:
push “192.168.10.0 255.255.255.0”
上面的意思轉成手動寫routing-table的話就是
[route add 192.168.10.0/24 vpn_gateway dev tun0]

b—[讓vpn-client可以透過vpn的tunnel連到學校192.168.10.0/24區域,但192.168.10.5/32不希望client用vpn-tunnel]

在server.conf寫:
push “192.168.10.5 255.255.255.255 net_gateway”
push “192.168.10.0 255.255.255.0”
跟a的意思一樣,只是192.168.10.5/32特別指定不要用vpn_gateway,而照client的default_gateway走

以上兩個,只要你本身server的forward與nat在iptables設定正確的話…你可以在client用trace-route去測,正確的trace-route的表應該是

client-windows-xp
cmd<—-tracert 192.168.10.1
1 1ms 1ms 1ms —- vpn_gateway(10.8.0.1)
2 ?ms ?ms ?ms —- 192.168.1.254(server-eth0-gateway)
3 ?ms ?ms ?ms —- 192.168.10.1
當然,2跟3中間會因為你經過的網路設備而有其他的gateway會回應

如果你trace-route的第一個gateway不是vpn_gateway的話,那你最好檢查一下你client的routing-table…因為,如果你client本身所在的網路就是在192.168.10.0/24的話,基本上,應該不會走vpn_gateway
又或者你自己已有設定routing-table在client端…要記住一件事,routing-table的優先順序會從最小範圍先走<—不懂啥意思,沒關係,我再舉個例子,我假設有底下routing-table-表b,如果我現在要連1.1.1.1,1.1.2.1,1.3.1.1,4.1.1.1,1.1.1.129會怎麼走

routing-table-表b
dest,gateway
1——1.1.1.0/24,gw-a
2——1.1.1.128/25,gw-e
3——1.1.0.0/16,gw-b
4——1.0.0.0/8,gw-c
5——0.0.00/0,gw-d

1.1.1.1—->gw-a
1.1.2.1—->gw-b
1.3.1.1—->gw-c
4.1.1.1—->gw-d
1.1.1.129–>gw-e
其實重點只有1.1.1.1跟1.1.1.129…這兩是同一個class-c,為什麼1.1.1.1會走gw-a,而1.1.1.129不走gw-a而走gw-e
因為routing-table中的1—>1.1.1.0/24—>範圍是指1.1.1.0~1.1.1.255—>256
而2—->1.1.1.128/25—>範圍是指1.1.1.128~1.1.1.255—>128
routing會挑範圍小的先走…就是這意思…(不過上面的算法應該是不會把網路位址跟廣播位址算進去啦)

以上…就是小小的說明在OpenVPN中,怎麼設定server/client的路由走向…
設定的好的話,基本上可以在server把openvpn的服務多開幾個,設定多個tun/tap的虛擬網卡,server.conf也可以寫多個不同的…記得port要用不同的,然後你就可以控制什麼使用者用啥port連入vpn-server時,會走什麼樣的routing…這樣也不怕會有人偷渡…

當然,server可以多config開多,client也行…但如果你server或client是windows的,記得要手動新增vpn虛擬網卡,各設定檔之間是不能共用一個虛擬網卡的,記得,dhcp給的ip最好也自己設定一下…反正虛擬ip蠻多可以用的…

class-A->10.0.0.0/8
class-B->172.16.0.0/11
class-C->192.168.0.0/16

應該吧…不然就google查一下就行了 在網路上有很多教學,會叫你把vpn當做default-route-gateway…但,這樣很容易一失敗就造成server本身外連有問題…如果外連有問題,你想遠端修改都不行…所以,我強烈建議不熟routing是啥東東西,不要太輕易就把server本機的default-route給改掉…

以linux上來看,假設本機實體網路卡eth0使用的ip-address為[192.168.1.1/32][gateway=192.168.1.254],vpn網卡tun0/tap0使用的ip-address為[10.8.0.1/24]/p–t–p[10.8.0.2/24]=gateway,指令[route -n]=表a

表a:
dest/mask,gateway,dev
10.8.0.2/32,0.0.0.0,tun0
10.8.0.0/24,10.8.0.2,tun0
192.168.1.0/24,0.0.0.0,eth0
0.0.0.0/0,192.168.1.254,eth0

上面這一塊,有上過網路管理課程的朋友一定很了解,我就大至上講一下,routing-table就是告訴電腦的封包該往哪走…用白話一點描述就是

  1. 封包-a想去10.8.0.1~10.8.0.255的地方,必須到10.8.0.2的門口排隊
  2. 封包-b想去192.168.1.1~192.168.1.255的地方,必須到0.0.0.0的門口排隊
  3. 不想去上面二個地方,而想去別處的,就通通到192.168.1.254的門口排隊

想去的地方,就是routing-table上的dest(目的地),門口就是gateway,dev指的就是你的實體設備(電腦中叫網路卡)

所以我以vpn+nat的方式來表述一下

vpn-client[10.8.0.10/32]/tun0-vpn-server[10.8.0.1/32]/tun0-vpn-gateway[10.8.0.2/32]
eth0-實體網路[192.168.1.1/32]/eth0-實體網路-gateway[192.168.1.254/32]
表a就是這一台啟動vpn服務的routing-table

以一般我們vpn-server-conf的預設,若無特別設定的話,client端除了本身自有的網路產生的路由表(routing-table),還會因為連上vpn-service時產生的dest:10.8.0.0/24,gateway:vpn_gateway(絕對不會是10.8.0.2/32,因為vpn的gateway是vpn-service去操控的,只要你設定正常…基本上不用理)

所以到這面為止,綜合basic-setting的話,你會發現,vpn只有讓10.8.0.0/24互通而已…也就是client[10.8.0.10]可以連到server[10.8.0.0/24]…這也就是server.conf中client-to-client的用意(不過,不啟用client-to-client也會有這個routing…因為這算是vpn-lan中的default-route…client-to-client只是告訴vpn-service,client們可以互相連繫)

但我用vpn是為了可以方面連到學校內部,因為學校有一些內部的管理只能允許校內ip,所以,vpn就得配合nat的方式出去

在[OpenVPN–純架設-by ssl]的routing/nat/forward做過說明了…所以,在此我就先當做你server端的vpn-input/output/forward/nat已設定在iptables上了…接著,我就來說說怎麼設定routing-table

在server.conf中,你會看到一些用[push “xxxxxxxxxxxxxxxxxx”]的東東,這push的意思就是把後面引號中的東西設定到client去…若你在server.conf看到[xxxxxxxxxxxxxx]沒引號也沒push的話,那代表是設定在server上…以上我舉幾個例子

a—[讓vpn-client可以透過vpn的tunnel連到學校192.168.10.0/24區域]

在server.conf寫:
push “192.168.10.0 255.255.255.0”
上面的意思轉成手動寫routing-table的話就是
[route add 192.168.10.0/24 vpn_gateway dev tun0]

b—[讓vpn-client可以透過vpn的tunnel連到學校192.168.10.0/24區域,但192.168.10.5/32不希望client用vpn-tunnel]

在server.conf寫:
push “192.168.10.5 255.255.255.255 net_gateway”
push “192.168.10.0 255.255.255.0”
跟a的意思一樣,只是192.168.10.5/32特別指定不要用vpn_gateway,而照client的default_gateway走

以上兩個,只要你本身server的forward與nat在iptables設定正確的話…你可以在client用trace-route去測,正確的trace-route的表應該是

client-windows-xp
cmd<—-tracert 192.168.10.1
1 1ms 1ms 1ms —- vpn_gateway(10.8.0.1)
2 ?ms ?ms ?ms —- 192.168.1.254(server-eth0-gateway)
3 ?ms ?ms ?ms —- 192.168.10.1
當然,2跟3中間會因為你經過的網路設備而有其他的gateway會回應

如果你trace-route的第一個gateway不是vpn_gateway的話,那你最好檢查一下你client的routing-table…因為,如果你client本身所在的網路就是在192.168.10.0/24的話,基本上,應該不會走vpn_gateway
又或者你自己已有設定routing-table在client端…要記住一件事,routing-table的優先順序會從最小範圍先走<—不懂啥意思,沒關係,我再舉個例子,我假設有底下routing-table-表b,如果我現在要連1.1.1.1,1.1.2.1,1.3.1.1,4.1.1.1,1.1.1.129會怎麼走

routing-table-表b
dest,gateway
1——1.1.1.0/24,gw-a
2——1.1.1.128/25,gw-e
3——1.1.0.0/16,gw-b
4——1.0.0.0/8,gw-c
5——0.0.00/0,gw-d

1.1.1.1—->gw-a
1.1.2.1—->gw-b
1.3.1.1—->gw-c
4.1.1.1—->gw-d
1.1.1.129–>gw-e
其實重點只有1.1.1.1跟1.1.1.129…這兩是同一個class-c,為什麼1.1.1.1會走gw-a,而1.1.1.129不走gw-a而走gw-e
因為routing-table中的1—>1.1.1.0/24—>範圍是指1.1.1.0~1.1.1.255—>256
而2—->1.1.1.128/25—>範圍是指1.1.1.128~1.1.1.255—>128
routing會挑範圍小的先走…就是這意思…(不過上面的算法應該是不會把網路位址跟廣播位址算進去啦)

以上…就是小小的說明在OpenVPN中,怎麼設定server/client的路由走向…
設定的好的話,基本上可以在server把openvpn的服務多開幾個,設定多個tun/tap的虛擬網卡,server.conf也可以寫多個不同的…記得port要用不同的,然後你就可以控制什麼使用者用啥port連入vpn-server時,會走什麼樣的routing…這樣也不怕會有人偷渡…

當然,server可以多config開多,client也行…但如果你server或client是windows的,記得要手動新增vpn虛擬網卡,各設定檔之間是不能共用一個虛擬網卡的,記得,dhcp給的ip最好也自己設定一下…反正虛擬ip蠻多可以用的…

class-A->10.0.0.0/8
class-B->172.16.0.0/11
class-C->192.168.0.0/16

應該吧…不然就google查一下就行了

[轉貼]OpenVPN完整SSL設定

因為作者寫得太優了,字字是重點
所以只好全轉貼了,有些部分我還看不太懂
放在這裡留著慢慢看

真的很謝謝原作者,因為這份資料他把VPN遺漏的NAT和iptables設定都加入進去了
VPN我之前有設定成功連線過,但除了ping,其他都無法使用
但又把client強制把gateway設定到server端上,因沒有配套措施
導致client整個斷線….:(

看到這篇我又有動力想嘗試了,看來只能在linux下才能發揮OpenVPN的全功能
(windows版就殘念….我再找文章看看)

 

2010/2/12補充:文章終於看董一些了,也可以正常用VPN來上網
看還是搞不定VPN存取server網路內的電腦= =

以下試做發現的勘誤,直接改上去

———————————————————————————————–

原文出處http://cheaster.blogspot.com/2009/11/openvpn-by-ssl.html

參考網頁:
1-http://ssorc.tw/rewrite.php/read-265.html
2-http://justshark.blogspot.com/2006/05/openvpn.html
3-http://blog.roodo.com/candyz/archives/283944.html
4-http://theitdepartment.wordpress.com/2009/06/08/openwrt-openvpn-routed-lans/
5-https://forum.openwrt.org/viewtopic.php?id=6576

我的openvpn是上rpm-pbone上找的,因為懶的用source去做…就找fc8的rpm上來裝

裝好後,你會在/etc/openvpn底下發現easy-rsa的資料匣,進入裡面的2.0…

接著,我從上面的五個參考網頁上看出幾個重點:

  1. ssl的server與client憑證
  2. server與client的config設定有七、八成要一致
  3. 如果你server是在unix-like上架設的,那就不僅只是把vpn-service啟動就好了,還要做封包的forward跟nat
  4. 在server的config上定義client的routing-table要特別注意…沒必要把default route做到vpn-gateway上就別做…(我個人認為啦)

ok,以上四個重點也是建置的幾個步驟,接下來就一個一個來吧

[1. ssl的server與client憑證]

Johnny註:關於這部分我會重新整理這段的做法,最常見犯的錯誤是在變數宣告上,指令為

. ./vars

其他依序

./clean-all
./build-ca
./build-inter 主機名字

注意主機名字不可重複,其他照提示作就可以了
可參考

http://fedoraproject.org/wiki/Openvpn

我之後會重新整理這段文章

[2. server與client的config設定有七、八成要一致]

server端(linux-fedora-8):
依參照網頁3上說的,把ca.crt/ta.key/dh1024.pem/server.* 從easy-rsa/2.0/keys下拷到/etc/openvpn,然後再把/usr/share/doc/openvpn-版本/sample-config-files/server.conf也拷到/etc/openvpn底下。
然後,編輯server.conf,主要要修改的地方有

  • local主機ip位置
  • port(我用預設1194)
  • proto(我用tcp)
  • dev(我用tun)
  • ca(指定ca.crt位置)
  • cert(指定server.crt位置)
  • key(指定server.key位置
  • dh(指定dh1024.pem位置
  • server ip mask(我用預設的10.8.0.0/24)
  • ifconfig-pool-persist ipp.txt(預設值)
  • push “route network mask”(這要點4要注意的,這是是修改client的routing-table,假設我要讓連上vpn的client可以存取或連線至vpn-server區域的某一塊的網路區域,就要增加這一行,例:讓client可以連至server網路區的192.168.111.0/24,那這一行就要寫成push “route 192.168.111.0 255.255.255.0”)
  • push “dhcp-option DNS ip-address”(vpn的虛擬網卡也是要用dns的,但建議這dns要在包在routing-table會從vpn-gateway走的範圍)
  • client-to-client(讓使用vpn的client們可以各自相連繫)
  • keepalive a b(預設值a=10/b=120,每a秒會由server向client詢問有沒有活著,若長達120秒沒回應,則server會判定client已失聯)
  • tls-auth ta.key-address 0/1(第一引數是指定ta.key的位置,第二引數0->server使用/1->client使用)
  • comp-lzo(使用lzo的連線壓縮技術)
  • max-clients num(最大同時使用vpn連上server的人數)
  • user/group(在unix-like的os上,讓vpn的service用daemon來啟動,windows就不用了)
  • status status-log-file-address(設定vpn-status的記錄檔的位置)
  • log/log-append log-address(openvpn-service的記錄檔位置)
  • verb num(log等級)

若沒提到的,就使用預值狀態吧,接著,請先到firewall把tcp-1194的port開放,然後啟動openvpn(service openvpn start),如果啟動正確的話(service openvpn status),就會在網路狀況(netstat -tlunp)上看到1194已被openvpn使用,然後log也可以讓你檢查一些狀況。接著看client的設定

client(windows XP):
在windows上要用openvpn,就要至官網下載openvpn-gui,找stable,我在用的時候是1.0.3,下載Installation Package後大部份都使用預設值安裝即可,不過,next不要按太快,到了安裝元件的選擇(Choose Components)時,多勾一個My Certificate Wizard(這是我的建議,不勾也無關緊要);安裝中途會有一個驅動的安裝,那是虛擬網卡,然後應該就安裝結束;裝完之後,有裝firewall的人請把openvpn-gui的應用給開放…
再來,在openvpn-gui的安裝路徑中有一個sample-config,把裡面的client.ovpn拷一分到openvpn-gui/config底下,接著,再到server端下載ca.crt/ta.key/你要開放的用戶要用的xxx.crt、xxx.key、xxx.csr,也放在config底下…當然,你要在windows上重做一份這一些檔案也行啦,方法跟server的產生方式一樣,但記住,vars中的KEY_xxxxxx的設定要跟server的一模一樣
接著,編輯client.ovpn

  • client(就是指client的意思,預設是開啟)
  • dev tap/tun(server用什麼,client就要用什麼,所以我是用tun)
  • proto tcp/udp(server用啥,client就要用啥)
  • remote server-real-ip(就server在網路上的ip-address)
  • resolv-retry infinite(重新測試…預設開啟)
  • nobind(預設是nobind)
  • ca/cert/key(跟server一樣意思,就是指定這三個東西的位置,但注意,cert/key是要用client,不是server.cert/server.key唷)
  • tls-auth ta.key-address 0/1(跟server那解釋的一樣,但第二引數在client要改1)
  • comp-lzo/verb 3

client要設定的不多,因為大至上都是預設值,所以也不用怎麼更動

3. 做封包的forward跟nat

這是我一開始卡很久的地方,因為,網路上很多教學都沒說了這一塊,但實際不說也沒錯,因為vpn的用意並不是讓你因為這樣的而繞行方便,但這其實就是一種route and nat的方式,很像一種load-balance(如果你vpn很多的話)

  1. 啟用forward功能[echo “1” > /proc/sys/net/ipv4/ip_forward]
  2. 讓vpn的虛擬網卡在server開放input/output
    input[iptables -A INPUT -i tun+ -j ACCEPT]
    output[iptables -A OUTPUT -o tun+ -j ACCEPT]
  3. 開放server端的vpn與實體網路進出FORWARD
    eth->vpn[iptables -A FORWARD -i eth* -o tun+ -j ACCEPT]
    vpn->eth[iptables -A FORWARD -i tun+ -o eth* -j ACCEPT]

    注意,eth*的星號,指的是你實體網卡的編號,建議指定一張就好…因為我不肯可否用eth+

Johnny註:文中的eth*指的是對外的網卡介面,例如:ppp0或eth0
目前如果要用VPN上網的話,還是只能架在Linux上
除非windows上有封包轉遞的軟體可以處理

參考http://openvpn.net/index.php/open-source/documentation/howto.html#redirect
http://fedoraproject.org/wiki/Openvpn

  1. 啟動nat,由source 10.8.0.0/24傳來的會走eth*出去
    [iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth* -j MASQUERADE]
    eth*這裡的星號是指你10.8.0.0/24要nat從哪一張網卡走出去,然後nat後的ip是那張網卡的

上述指令在server(unix-like os 適用)輸入就ok了

4. routing-table

主要設定就是在server.conf的push “route a.b.c.d x.x.x.x”這裡,就是,當你client要連a.b.c.d/x.x.x.x這網域時,才會往vpn-gateway走,若不是這一個網域的,就會走client其他的網路設定。如果你覺得,我連上vpn就是都只走vpn的話…那你就不用設定route,你直接在server.conf上,寫入[push “redirect-gateway”]就行了,這樣client的default-gateway會改成走vpn-gateway,幾乎就是叫client只走vpn了

以上四個是我實做二天openvpn的重點,實際上,照著參考網頁走就可以讓server啟動正常…但唯一就是routing-table的設定跟package-forward與nat的部份還是得詳研… 

Johnny註:正常的log長這樣

http://openvpn.net/index.php/open-source/documentation/howto.html#start

[備忘]XP常用的網路指令

節錄自
http://blog.xuite.net/air.weid/computer/21525555?ref=rel
http://blog.xuite.net/become/blog/13563859
http://w-type.blogspot.com/2007/09/windows-xp-route.html
有些指令還是記不得,放在這裡備用

 

常用的網路指令

ping
ping用於確定本地主機是否能與另一台主機交換(發送與接收)資料。根據返回的訊息,你就可以推斷TCP/IP參數是否設置正確以及運作是否正常。 Windows上的Ping指令預設發送4個ICMP封包(32byte),如果一切正常,應能得到4個回應封包。Ping還能顯示TTL(Time To Live存在時間)值,你可以通過TTL值推算一下封包已經通過了多少個路由器。
netstat
netstat用於顯示與IP、TCP、UDP和ICMP等協定的統計資料,一般用於檢驗本機各埠的網絡連接情況。
ipconfig
ipconfig用於查詢目前電腦的網路組態,包括IP位址、MAC硬體位址、Gateway、子網路遮罩、DHCP主機、DNS主機& hellip;等等資訊。
arp
arp用於確定對應IP的網卡實際位址。
tracert
tracert命令可以用來追蹤封包使用的路由(路徑)。
pathping
pathping的功能與tracert很類似,一樣可以偵測本機電腦到對方電腦的所經路徑,並列出經過的全部節點。不過 pathping有一個更實用的功能,它可以顯示各節點的資料封包遺失狀況,讓我們可以直接判斷是哪台路由器或電腦造成連線速度驟減或其他網路障礙。
route
route命令可以用來顯示和修改路由表的內容。
nbtstat
nbtstat命令用來提供關於NetBIOS的統計資料。運用NetBIOS,你可以查看本機或遠方主機的NetBIOS名字表格。
net
net命令有很多函數可用於電腦之間的NetBIOS連接,如net view、net config和net use等。

 

路由表相關

Route Print:印出你現在的Route Table

●route add 用來加入路由路徑
例如:route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20
指出 Network DestinationNetmaskGatewayInterface metric

● route -p add 用來永久加入路由路徑,使用-p 參數可以保留路徑設定,不會因為電腦重開機而消失。
例如:route -p add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20

● route delete用來刪除路由路徑。
例如:route delete 192.168.0.0 mask 255.255.0.0

● route change用來修改現有的路徑設定。
例如:route change 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 10