vpn伺服器源碼
Ⅰ lfs找不到find和xargs
unix學習方法-高手之路
姜道友(二〇〇七年二月十四日)
1. 基礎學習.................................................... 1
2. 配置伺服器.................................................. 1
3. 軟體安裝與伺服器管理........................................ 2
4. 更換思緯.................................................... 2
5. 學習其它unix系統............................................ 2
6. 學習shell編程............................................... 3
7. 學習C編程................................................... 3
8. 製作自己的unix發行版........................................ 3
前言:
對於一些想學習linux及正在學習linux系統的人,非常希望成為linux甚至unix高手,本人從事unix方面的工作很多年了,想介紹一下自已的經驗
Unix有很多分支,這里不再贅述,一般來說主要包括:Linux、Solaris、HP-UNIX、AIX、SCO、BSD、AS400等等系統,一般人精通2到3門類即可,觸類旁通即可很快掌握其它系統。下面是本人的經驗:
1. 基礎學習
買一本Linux基礎方面的書籍,主要講述基本理論及基本命令,如:《Linux基礎》、《Redhat 9.0系統管理員完全學習手冊》;或者在網上下載一些基礎方面的資料。系統地看完一本書,並在linux系統中(可以用vmware安裝一個虛擬機)練習基本命令。(之所以從Linux開始,是因為相對其它unix系統,Linux相對比較簡單或容易入門)
2. 配置伺服器
可以嘗試配置一台web伺服器或ftp伺服器或郵件伺服器(sendmail)或其它應用伺服器如:vpn(pptp或ipsec)。剛開始配置時不要追求完美,只要實現基本的功能即可。這部分基本上照搬書的步驟即可實現。
3. 軟體安裝與伺服器管理
可以試著安裝一些源碼程序(不要使用rpm軟體包安裝或帶有install的程序安裝),通過./configure make make install等步驟掌握程序的編譯與安裝方法。同時掌握Linux伺服器日常管理方法:如日誌管理、進程管理、備份與恢復方法、用戶管理、許可權管理等等,基本成為一個Linux系統管理員。平時多訪問linux技術方面的網站或論壇,也可增加你的技術和經驗。
註:很多人學習或使用Linux多年,但水平僅僅停留在這里
4. 更換思緯
如果系統了學習了linux基礎方面的知識並簡單配置了一些應用伺服器,並掌握了命令的基本用法,這時需要更換思緯,學習一下Linux架構方面的知識,並深入了解Linux系統體系結構,如etc目錄是什麼作用 /usr/bin /usr/spool /var /opt是什麼作用,ext3文件系統有什麼特點等等。從思緯上區別看待Linux系統。同時可以試著編譯一下內核,並熟悉內核中的功能模塊,通過對內核的認知,可以讓你深入了解linux核心的一些技術。
5. 學習其它unix系統
如果基本上熟悉了Linux系統,現在可以學習其它系統了,如:Solaris、AIX、BSD…………等等,畢竟很多重要伺服器不是Linux系統。很多系統可以在虛擬機上安裝,如安裝一台Solaris x86虛擬機或從網上下載SCO虛擬機或…………在虛擬機上系統地學習該系統,熟悉它的架構,並與Linux比較一下有什麼不同。對於一些專用的系統,網上也有好心人公布測試機信息,你可以遠程登錄學習(不要刪文件或破壞喲)。在學習其它系統過程中,可以訪問相關系統的BBS論壇,看一下別人的問題是怎麼解決的。如果你很熟悉Linux系統,學習其它unix系統應該很快。當然如果你所在的公司有一些伺服器如:SUN880或HP伺服器或IBM伺服器等,你應該很快可以成為有經驗的solaris/HP-UNIX/AIX高手的。
6. 學習shell編程
作為一個真正的優秀unix系統管理員,不懂shell編程是絕對不行的(注意是絕對),因為在unix系統中,很多是shell腳本程序,掌握了shell編程技術,你可透徹地去了解unix系統中程序的運行情況。而且對於unix系統,很多系統管理可以通過編寫shell腳本程序來實現,如自動備份、自動檢查網路斷線並發郵件通知、自動檢查VPN狀態、收集PPTP用戶撥入信息等等。精通shell編程,讓你輕松靈活地管理和駕馭Unix系統。
7. 學習C編程
這一步我就不多說了,畢竟達到這一層次的unix系統管理很少(開發人員除外)。Unix中的很多程序是通過C編寫的,掌握編程技術,你可以編寫unix下的應用程序。
8. 製作自己的unix發行版
如果對Linux進行內核編譯、程序裁減、系統優化等,你可以製作自已的unix系統。象現在Linux發行版太多了,但都是Linux內核,只是文件與系統組織方式不一樣而已。我們單個人是無法製作象Redhat或debian這樣的系統,但可以製作小的專用系統,如製作專用的web伺服器或專用的網關防火牆系統。象IPCOP()就是這一類,大家可以參考或受到啟發。
寫給想成為Linux 高手的人們
首先,我想引用一下別人說過的一句話:除非在過去的十年你一直生活在山洞裡,否則你一定聽說過linux.
是的,現在聽說過linux,會一點linux基本操作的人多如牛毛,然而真正能用linux做一點事情的確少之又少,這就造成了現在的狀況:各大 linux論壇十分熱鬧,但我國linux到底是什麼原因造成了這樣的狀況? 糾其原因,只有兩個字:浮燥!
如果在論壇里來一次調查投票,看一下在論壇里的人到底有多少人手頭有一本以上的正規linux教材.我想這個數字不會超過30%. 如果再問一下,有多少人完整的讀過各發行版自帶的入門文檔,系統定製文檔,系統管理文檔和系統安全文檔,恐怕這個數字不到10%. 如果進一步再調查一下究竟有多少人靜下心來學習過操作系統和計算機網路等和linux學習十分密切的專業課程,那麼恐怕只有3%的數字都不到了.
這讓我想到了98年前後IT泡沫時代的中關村.在中關村的大街小巷,到處是一個個意氣分發牛哄哄的IT精英.他們戴著默鏡,剔著小平頭,張口閉口都是網路,安全,信息,黑客,代碼,產業.T恤背後寫著三個字:別惹我! 然而最後IT泡沫一過,只有那些真正肯安安心心靜心學習的人在IT界存活了下來.
現在國人學習linux的狀況也是這樣,學linux的人個個都意氣分發,以為學習linux會用linux是多麼了不起.學了一點皮毛就認為很牛了.但是那些企業用人單位卻很難找到真正適合的linux人材.因此,我想就目前的狀況發表一下我的看法.
首先,這篇文章是寫給那些想成為linux高手,並真正想用linux做些事情的人.如果你只想做一個菜鳥,沒事的時候在你雙系統啟動的電腦上偶爾選一次 linux,然後沒事進去偷著樂,那就請你自便.另外,我想說明,和真正的牛人比起來,我自己還處於一個比較低的水平.我沒有讀過內核源代碼,不知道 linux工作原理等等,但是通過摸索,至少我已經找到了通往高手的道路的方向.因此還是想說兩句.
1,linux不是玩具
如果你想系統的學習linux,你必需清楚的認識到這一點.現在有很多人,號稱是linux愛好者,但是他們大部分的事情還是用windows 做,而linux只是作為一個隨便玩玩的系統.他們懂得一些linux的基本操作,知道有linux這個玩藝,也因為經常聽人家說linux好就咬定了 linux就是好.只要有人說linux比windows差,那麼他們就奮起反駁,他們也看不起用windows的人,認為用windows的人水平低. 但是自己用電腦的大部分時間還是用windows並且把重要的文件都放在了windows分區,因為他們骨子裡只把linux當做玩具,沒有真正領悟 linux的精髓所在.如果你真正想系統的學習linux,想用linux有所作為,那麼請忘記windows的思維方式,慢慢感受和習慣linux 的操作方式,總有一天你會真正體驗到他的奧妙所在,從而從自己內心深處喜歡他,使用他,而不是為了趕時髦或向人炫耀而使用他.
2,手頭有一本好的入門教材嗎
"如果你還沒有好好的讀完過一本linux安裝及入門教材就不要到初學者論壇來問題!因為你連問問題的資格都沒有! " 這是我的一個比較偏激的觀點.
如果你現在開始下決心學習linux了,那麼第一件你要做的事情是到書店去挑一本好書.而不是到論壇社區去問該用什麼版本,該如何學習 linux.一本好的入門教材可以讓你快速領悟linux的操作方式,系統的基本使用等等.而且都是前人總結經驗寫出來的,他可以幫你搭起一個學習 linux的框架,對linux有一個總體的認識.就好比建一撞大樓前先打好地基,搭好混凝土框架.以後就可以慢慢往這個框架里添磚加瓦,最後建起大樓. 而那些想急於學習的,不想看書,只想靠混論壇來學習linux知識的人,就好比建一撞大樓,今天建好第一層,然後第一層就要全部粉刷好,裝修好,傢具買好住進去,然後第二天再開始建第二層.這樣沒有整體規劃的學習是學不好linux的,最後的結果是浪費自己的時間,也浪費別人的時間. 如果你不信, 可以讓實事去告訴你,以一年為限,你和你的一個朋友同時從0開始學linux,計算機基礎差不多.你去買幾本好書自己慢慢看邊看邊做實驗,讓你的朋友整天到各大論壇瞎混零散的學些linux知識.也許一開始,你的朋友會比你懂得多,但是一年以後你的水平肯定在你的朋友之上. 在初學階段,不要隨便在論壇上發問,多看書是根本,即使真的非問不可的問題,也要先自己動手察資料解決.實在不行再來問,高手不會鄙視菜鳥,因為每一個高手都是從菜鳥過來的,他們都知道菜鳥的苦衷.但是高手會看不起那些自己不願動手動腦不會學習解決問題而只想得到現成答案的人.那樣的人會被高手在心裡暗罵成不配用linux的蠢貨.
你需要以下幾種書:
一本好入門教材->一本linux指令參考手冊->linux系統管理手冊->講解linux系統原理的書.
一開始,你只需要入門教材就可以了.並且嚴格安教材的講解去學習,不要一天到晚想著去裝顯卡驅動啦,裝游戲啦,裝軟體啦,這些都沒有必要.你就當你自己的電腦不能上網,只能通過看書學習.慢慢看書,穩抓穩打.慢慢地就融會貫通了.這時候你再到linux初學者論壇去看看,你在那裡早已經是高手了.
另外,一開始你要選定一本入門教材,但是不能只看一本,因為有些書上講的,可能是另外的書上沒有的.因此,重點選一本教材看完.然後再看兩三本入門教材瀏覽一下.作為對第一本書的知識的擴充和鞏固. 在看書過程中,如果你有什麼不懂的,不要急於上論壇問,自己認真看幾次,實在不懂沒有關系,把問題放在那裡.不要鑽牛角尖不懂不肯放手,這種精神是好的, 但是方法是錯誤的.你盡管學下去,也許你看完書本以後的內容,就對前面不懂的內容豁然開朗了.這是在學習linux中常有的情況.
另外,現在很多入門書籍是針對非技術型用戶的.(我把那些對linux本身不感興趣,只想用他來上網,聽音樂和打字的人稱為非技術型用戶,而把對 linux本身感興趣的人稱為技術用戶)
這些針對非技術型用戶的入門書籍幾乎通篇都是插圖,講解的內容都是如何在圖形界面下操作.這些書籍並不能幫你成為一個高手.反而會讓你養成倚賴滑鼠和圖形界面操作的習慣以後很難改掉.因此不能看這些書,一定要買那些一開始就從系統基本機構基本命令開始講解的書籍.我看過的第一本linux入門書籍共有十多章,但是他從第十一章開始才大致的講解了一下圖形界面的知識.我很感謝這本書,讓我一開始就脫離了windows的思維方式,給我以後的進一步學習帶來了很大幫助.
完成以上的內容,你就完成了建大樓打地基建混凝土框架的過程了.可以接下來進一步學習了.
3,你看完系統自帶的文檔了嗎?
當你完成入門的過程後,就可以開始讀其他的文檔,然後到論壇的精華區看看,向你建起來的大樓框架中添磚頭了.當然 ,首先要讀的,還是系統自帶的文檔.
絕大多數linux發行版都自帶非常詳細的文檔.比如我一直在用的redhat,他有從系統安裝到系統安全,針對不同層次的人的詳盡文檔.靜下心來,把這些文檔讀完,比看任何論壇的精華區都有用.書籍和文檔就好比是你每天都離不開的一日三餐,論壇區的精華文檔就好比是點心和水果.你可以不吃點心和水果,但是決不能不吃正餐.
當然,不能為看文檔而看文檔,你一定要邊看邊安文檔中說的做試驗驗證.這樣才印象深刻,否則看過就忘記了等於沒有看.
另外,如果真心想學習linux就不要吝嗇,也不要害怕丟失數據而不敢做實驗.我建議你去買一個小的二手硬碟,然後放開手干.不要怕丟失數據而不敢做,如果你沒有學會技能,將來做了linux系統管理員或者網路管理員到那時因為不會而丟了數據就是大事情了.
4,學習linux不是逛自由市場.
經常看到有人問用什麼版本的linux好,其實只要你認真學習無論什麼版本都挺好的.要知道,開發linux發行版的人都是通讀過linux內核代碼,對 linux原理極其精通的人,而且每一個開發團隊都對他的發行版做過測試後放出的.那些國際知名的大品牌更是如此. 因此,討論什麼版本好並無意義,關鍵是你是不是真心想學.不過,為了避免曲高和寡,最好選用的人多的版本,比如redhat manrake suse 等等. 國內有一兩個 linux版本做的也不錯,但是國內的linux都是面向非技術型用戶開發的,因此,如果你想成為高手,建議不要用國內的版本.
學習linux不是逛自由市場,選定版本就要靜下心來學習.不要今天換版本明天要升級.這樣對你沒有好處.我見過一些人號稱用過十幾種甚至幾十種 linux,向人談論起來頭頭是到,好像懂的很多,但是如果你讓他去用linux搭建一個web伺服器,做一個linux網關,他就什麼都不會了.他們把時間都浪費在了版本的轉換上了.
5,你能看懂英文文檔嗎?
談論這個問題,我有點低氣不足,因為我自己的英語很差.但是,至少我可以無障礙的讀完一般的計算機文檔.計算機英語很簡單,只要熟悉了計算機專業英語,高中畢業的水平就可以輕松的閱讀計算機文檔了.如果你的英語實在太差了,連最簡單的計算機英語文檔都看不懂,那麼在學習linux的同時,請趕緊學習英語. 也許你說,你可以看翻譯的文檔,當我還是一個菜菜鳥的時候,也是這樣認為的.但是,後來才發現,如果你想深入學習linux,看不懂因為文檔實在是太難了.寫的最好的,最全面的文檔都是英語寫的,最先發布的技術信息也都是用英語寫的.即便是非英語國家的人發布技術文檔,也都首先翻譯成英語在國際學術雜志和網路上發表.你去看看各大軟硬體生產商的官方網站,有哪一個不是用英語作為其主站的? 長期用windows的人會很不習慣這一點,裝個軟體還要看半天文檔,應為windows用起來實在太簡單了.但是如果你想學習linux就必需學會看各種文檔,而大部分的文檔都是用英語寫的.我發現很多人甚至連man文檔都不會看,有什麼命令不會用了就跑到論壇上來問,還裝出一副可憐相,乞討一個命令的用法.有這些時間還不如自己看看man文檔,即使你一個一個單詞的翻譯成中文再自己看都比問別人強,因為別人的回答再怎麼詳盡都比不上man文檔詳盡.安裝一個新的軟體時先看README,再看INSTALL然後看FAQ,最後才動手安裝,這樣遇到問題就知道為什麼.否則,說明文檔都不看,結果出了問題再來找答案反而浪費時間! 古人說欲速則不達就是這個道理! 真的,如果你man能搞懂,就具備了一個IT人員的基本功了。
6,忘記windows的思維方式
思想性的轉變比暫時性的技術提高更有用,因為他能幫助你加快學習速度.現在很多人用linux.但是,他們用linux的方式完全是 windows的那一套方式.骨子裡都是windows的思想.這樣是不能領悟linux的精髓體驗不到他的優越性的.我前幾天看到一個朋友要把剛裝了不到2天的mandrake 10 刪除掉,我問他為什麼,他說太慢了,受不了,還是用windows快.然後我留意了一下他用linux的方式,他的所有操作都帶著windows的影子. 他連最基本的刪除,移動文件這樣的操作都要用滑鼠,這樣當然慢了!最後我只好說,你刪除吧,你不適合用linux, linux不是這樣用的.各位可以去看看那些linux高級用戶,他們是怎樣操作的.通常他們都是在X上開一個xterm或者rxvt終端,80%以上的操作都在這個終端下用命令完成,因為 linux的命令行十分強大,速度也十分快,簡單的幾個命令的組合就能完成非常復雜的操作.舉一個例子:linux 的常用命令find,去看看man文檔,初學者一定會覺得太復雜而不原意用,但是你一旦學會了就對他愛不釋手.他的功能實在太強了,在配合exec參數或者通過管道重定向到xargs命令和 grep命令,那麼他能完成非常復雜的操作,如果同樣的操作你用圖形界面的工具來完成,恐怕要多花十幾陪的時間.因此linux高手經常會說:如果沒有 find和grep我們還怎麼活.但是現在大部分的linux初級用戶受到windows影響都喜歡用圖形界面的工具來完成一些基本的操作,我並不是說圖形界面不好.只是由於linux和windows設計思想的不同他們的操作方式也有很大不同.在windows下用圖形界面操作會比敲命令快,但是 linux是一個命令行組成的操作系統,他的精髓在命令行! 無論圖形界面發展到什麼水平這個原理是不會變的!
7,入門以後多學命令
當你看完了一兩本入門書籍後就應該擴充自己的知識,多學習linux命令,但是不要在初學階段就系統的學習linux命令,初學階段只要學會書上提到過的命令就可以了.單靠學習各種命令而成為高手是不可能的,但不會命令而成為高手也是不可能的.這就好比學英語,什麼語法都不懂,只捧著單詞手冊背單詞是學不會英語的,但是沒有單詞詞彙量英語水平也提不高的.
在linux中學習命令的最好辦法是學習bash腳本編程.bash腳本比起其他語言來學習簡單,但是功能卻十分強大.通過學習bash編程,能讓你掌握大量的linux命令.另外,買一本命令參考手冊是必要的,遇到不知道怎麼用的命令可以隨時查詢,這要比察man文檔快.特別適合英語不好,看不懂man 文檔的人.
在linux中,命令可分為系統基本命令和應用程序命令.系統基本命令是所有的unix類系統都支持的命令,走到哪都不變,只要是unix類系統上就肯定有.比如ls,rm,rmdir,cp,cd,mv,cat等等.這樣的基本命令大約有200個,這些命令是一定要掌握的,我買了一本指令參考手冊>這本書非常好,他根據命令的常用指數分類,標明3顆星的為最常用命令,一定要掌握,兩顆星的其次,1顆星的只要知道一下就可以了雖然現在都已經 FC3了,但是經典的UNIX基本命令幾十年來都沒有變過!另外有些命令是linux特有的或者是某一個應用程序的可執行文件比如xmms播放器.這些只要知道就可以了,不知道也無所謂.有些命令比較少用,因此通常都記不住他的用法,對於這些命令至少要知道有這個命令,腦子里有印象,需要用的時候察一下手冊就可以了,但是決不能不知道這個命令的存在!
8,學會管理系統
等到有了基本知識,也掌握了一定量的命令用法後,就可以進一步學習管理系統.這些內容入門書上會有,但是不會很深入.要深入的學習系統管理,就要去買一本類似之類的書.認真的看書並做實驗,可以讓你很快的進步.學習配置各種網路伺服器,用linux搭建網路,這些都是學習linux系統管理和網路管理的好方法. 到了這個階段就可以經常上網察察資料,看發布軟體的官方網站文檔和FAQ,看看論壇精華區文章.但是不能本末倒置,多看書還是根本.書籍和官方文檔可以讓你系統的學習,但是論壇可以讓你學到一些小知識,小技巧.我本人也經常到論壇上來看看,因為即便是一個新手,也可能會發現一些你所不知道的小技巧,看論壇可以學到這些小技巧.但是我看文檔和看論壇的時間比不會小於4:1 . 可以把平時積累的問題一次在論壇上發問. 但是初學的時候不要頻繁上論壇,因為你要問的問題都在書上寫著,耐心一點,你很快就能看到了.
9,了結系統結構
等你有了一定的系統管理知識,知道了/etc下那些配置文件有什麼用,知道了一般的網路伺服器如何配置後,就可以去了解系統結構了. 了解系統結構不是要你去看什麼文件夾放什麼內容,而是要學習一些原理性的東西.比如系統是如何引導的,引導後啟動了那些東西.系統中哪些是最基本的庫文件,有什麼用等等.學習系統結構的最好方法是自己做一個linux系統,再也沒有什麼能比自己做一個linux系統更能學習系統結構的了.LFS (linux from strach)可以教你從源代碼自己編譯一個系統.通過自己編譯一個系統,你就可以了結linux系統結構,知道哪些文件是干什麼用的,以及他們如何協調工作.當然,在你達到LFS水平之前還有很多事情要做,比如學會如何編譯安裝源代碼發布的軟體和編譯新的內核等等.到了LFS水平,那麼在大多數 linux論壇上你就可以被人稱作"高手"了!到了這個地步,就相當於一撞大樓已經基本建好,但是還需要粉刷和裝修,真正的細活還在後面!
永遠記住天外有天,人外有人的道理.即便有了LFS水平,在那些搞linux系統開發,通讀過linux內核代碼的人看來你還是一個菜鳥.因此, 請時刻保持虛心的態度.即便是在 論壇上只有一顆星級別的人,也有可能是一個潛在的,真正的高手! 大多數真正的高手平時都在搞研發工作,哪裡有時間上論壇啊! 倒是有很多大學還沒畢業的學生,整天混在論壇上.
10,學習專業課程
如果你不是計算機專業的,而想把linux學好,就一定要學習專業課程.學習微機原理,操作系統,計算機網路等等專業課程是必需的.為什麼同時開始學習 linux,有些人學的非常快,不到半年就成了高手,有些人玩來玩去還玩不出名堂,玩了一兩年還是菜鳥? 因為那些學得快的人有基礎,他們都學過專業課程.同樣一篇文檔,沒有基礎的人可能看了三遍還不明白,基礎扎實的眼睛掃兩下就懂了! 這就是專業和非專業的差別! 因此,要想達到更高的境界就一定要學習基礎的專業課程. 學習過linux的人是需要基礎的,很需要匯編,數據結構,演算法,計算機組成原理。除了高校必開的課程,自己也要學習其他的知識。兩者相輔相成,很重要!
11,保持虛心學習的態度
我想再重復一遍天外有天,人外有人的道理!
保持虛心的學習態度不僅能讓你學到更多知識,而且會讓你受人尊重.
在linux的世界裡,如果你想靠混論壇,發水貼,換幾顆星星增加一下級別,然後再面對菜鳥說幾句牛哄哄的話來贏得別人的尊重是不可能的.即便是一個剛入門的菜鳥,也能分辨你回答問題的質量,從而知道你到底有多少水平. 另外,當你成了"高手"的時候,你也能從"菜鳥"那裡學到很多知識.因為有很多問題是你從來沒有想過的,認為自己肯定會的,但是實際遇到的時候會有困難. 而"菜鳥"們往往更善於發現這類問題.這就是中國人常說的"教學相長"!
在linux的世界裡,越是水平高的人越謙虛,因為他們知道自己還有很多不知道的,而那些半瓶水就想晃盪的人反而自以為是,因為他們還不知道自己還有很多不知道的! 去看看, 嵌入式開發和UNIX版塊的牛人,他們很多都是有過好幾年linux方面的工作經驗,精通linux和unix的好手,但是每個人都保持著非常謙遜的態度,這些人是值得尊敬的。
本文轉自 51cto 技術論壇
Ⅱ 如何在 Debian / Ubuntu 伺服器上架設 L2TP / IPSec VPN
首先解釋一個問題:在 iPhone 的 VPN 設置介面里(Settings >> General >> Network >> VPN),你可以看到三個標簽:L2TP, PPTP, IPSec。但上面我們又講本次介紹的 VPN 方式叫「L2TP / IPSec」,這兩者究竟是什麼關系?
這三個標簽確實令人混淆,准確的寫法應該是:L2TP over IPSec, PPTP, Cisco IPSec。PPTP 跟另外兩者關系不大,且大家較為熟悉,暫且不提,L2TP 和 IPSec 的區別如下。
L2TP:一個「包裝」協議,本身並不提供加密和驗證的功能。
IPSec:在 IP 數據包的層級提供加密和驗證功能,確保中間人無法解密或者偽造數據包。
本來,只用 IPSec 就可以實現 VPN,Mac OS X 和 Linux 都支持。但是 Mac OS X 和 iPhone OS 都推薦使用 L2TP over IPSec,在兩者的圖形介面上也只能設置這個。L2TP / IPSec 是業界標准,微軟也支持。而只用 IPSec 的常見於 Linux-to-Linux 的應用,比如將兩個位於不同地區的辦公室網路安全地連在一起。這多是固定 IP 路由器到固定 IP 路由器級別的連接,只需保證數據包不被中途截獲或者偽造就可以,故使用 L2TP 的意義不大。L2TP / IPSec 主要是實現所謂「Road Warrior」的設置,即用變動的客戶端連固定的伺服器。
Cisco 的 VPN 用的也是 IPSec 加密,但那是一套不同於 L2TP 的私有包裝協議,用於提供用戶管理之類的功能,因此一般都需要用 Cisco 自家的 VPN 客戶端連接。iPhone / iPad 的 VPN 設置介面中的 IPSec 標簽里有 Cisco 的標識,就是這個原因。
以下是在 Ubuntu 和 Debian 主機上架設 L2TP / IPSec VPN 的步驟,一共十四步。你需要有伺服器的 root 許可權(所以 DreamHost, BlueHost, MediaTemple 這些服務供應商幫你把一切打點周到的主機就無緣了),也需要一些基本的 Linux 知識。不然的話,我們還是推薦您找一位比較熟技術的朋友幫忙。
一、安裝 IPSec。如上所述,IPSec 會對 IP 數據包進行加密和驗證。這意味著你的電腦 / 移動設備與伺服器之間傳輸的數據無法被解密、也不能被偽造。我推薦用 openswan 這個後台軟體包來跑 IPSec。
用以下命令安裝 openswan:
sudo aptitude install openswan二、用文字編輯器打開 /etc/ipsec.conf,改成這樣:
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any三、用文字編輯器打開 /etc/ipsec.secrets,改成這樣:
YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret"(別忘了把「YOUR.SERVER.IP.ADDRESS」這部分換成你的伺服器的 IP 地址,把「YourSharedSecret」部分換成隨便一個字串,例如你喜歡的一句話,等等。)
四、運行以下命令:
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done五、檢查一下 IPSec 能否正常工作:
sudo ipsec verify如果在結果中看到「Opportunistic Encryption Support」被禁用了,沒關系,其他項 OK 即可。
六、重啟 openswan:
sudo /etc/init.d/ipsec restart七、安裝 L2TP。常用的 L2TP 後台軟體包是 xl2tpd,它和 openswan 是同一幫人寫的。
運行以下命令:
sudo aptitude install xl2tpd八、用文字編輯器打開 /etc/xl2tpd/xl2tpd.conf,改成這樣:
[global]
ipsec saref = yes
[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes這里要注意的是 ip range 一項里的 IP 地址不能和你正在用的 IP 地址重合,也不可與網路上的其他 IP 地址沖突。
九、安裝 ppp。這是用來管理 VPN 用戶的。
sudo aptitude install ppp十、檢查一下 /etc/ppp 目錄里有沒有 options.xl2tpd 這個文件,沒有的話就建一個,文件內容如下:
require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4注意 ms-dns 兩行我填的是 OpenDNS。如果你想用其他的 DNS 伺服器(例如谷歌的公共 DNS),請自行更換。
十一、現在可以添加一個 VPN 用戶了。用文字編輯器打開 /etc/ppp/chap-secrets:
# user server password ip
test l2tpd testpassword *如果你之前設置過 PPTP VPN,chap-secrets 文件里可能已經有了其他用戶的列表。你只要把 test l2tpd testpassword * 這樣加到後面即可。
十二、重啟 xl2tpd:
sudo /etc/init.d/xl2tpd restart十三、設置 iptables 的數據包轉發:
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward十四、因為某種原因,openswan 在伺服器重啟後無法正常自動,所以我們可以在 /etc/rc.local 文件里寫入如下語句:
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart到這里,設置工作已經基本完成。你可以用 iPhone 或 iPad 試著連一下。記得在「Secret」中填入你在上述第三步里填的 YourSharedSecret。
如果連接成功,上網也沒問題的話,恭喜你,大功告成。如果連不上,恐怕還得多做一步。
Ubuntu 9.10 自帶的 openswan 版本是 2.6.22, Debian Lenny 帶的版本是 2.4.12。這兩個版本的 openswan 都有問題。我們的測試結果表明,2.6.24 版的 openswan 可以在上述兩版的 Linux 操作系統下正常工作。所以如果做完以上十四步還是連不上的話,請考慮從源碼編譯 openswan 2.6.24
Ⅲ VPN中伺服器滿是熊貓. 我們客戶端如何防止中毒
您好
您可以到騰訊電腦管家官網下載一個電腦管家
電腦管家擁有16層實時防護功能,可以從上網安全、應用入口、系統底層等全方位保護電腦安全,避免熊貓入侵您的電腦
另外,電腦管家還獨有雲智能預警系統,可以在木馬活動早期偵測並阻斷木馬的破壞行為,通過雲查殺技術秒殺最新流行木馬。
如果還有其他疑問和問題,歡迎再次來電腦管家企業平台進行提問,我們將盡全力為您解答疑難
騰訊電腦管家企業平台:http://..com/c/guanjia/
Ⅳ 通過hook connect 函數 實現 VPN功能是否可行
在android系統中,可以使用iptables控制單個應用網路訪問。在google code上有一個開源項目-droidwall就是基於iptables實現的。除了iptables可以實現控制單個應用網路訪問外,還可以通過攔截應用中的connect函數,達到控制應用訪問網路的目的。下面從幾個方面分析android應用中connect調用流程為例來實現攔截connect實現網路禁用和ip過濾。(以下分析基於4.2源碼)
1.android中網路訪問流程
1)android系統中訪問網路可以通過Socket.java、URL.java、HttpPost.java、HttpGet.java等關鍵類來訪問網路資源。通過代碼追蹤,這些類訪問網路資源最終需要通過native方式,調用linux系統下的socket函數訪問網路。在android4.2源碼中,java層訪問網路得native方法定義在源碼路徑libcore/luni/src/main/java/libcore/io/Posix.java中(4.0之前的網路系統、文件系統的native方法是獨立分開得,4.0之後組織在Posix.java中)。如下是Posix.java中的代碼片段:
public final class Posix implements Os { Posix() { } public native FileDescriptor accept(FileDescriptor fd, InetSocketAddress peerAddress) throws ErrnoException, SocketException; public native boolean access(String path, int mode) throws ErrnoException; public native void bind(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException; ...... //對應linux下的connect系統調用 public native void connect(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException;
2)Posix.java中的native方法實現源碼路徑libcore/luni/src/main/native/libcore_io_Posix.cpp文件中,native connect方法實現代碼片段如下:
taticvoidPosix_connect(JNIEnv*env,jobject,jobjectjavaFd,jobjectjavaAddress,jintport)
{
sockaddr_storagess;
if(!inetAddressToSockaddr(env,javaAddress,port,&ss))
{
return;
}
constsockaddr*sa=reinterpret_cast<constsockaddr*>(&ss);
(void)NET_FAILURE_RETRY(env,int,connect,javaFd,sa,sizeof(sockaddr_storage));
}
有上代碼可知,java層connect最終功能由linux系統connect函數實現。
2.so注入
so注入可以參考古河大哥牛逼的libInject(點擊這里訪問)。
3.攔截connect庫編寫
在connect中,獲取傳入的參數ip地址,根據需要把需要禁用的ip地址改為127.0.01.以下是我測試的攔截connect函數關鍵代碼:
intnew_connect(intsockfd,conststructsockaddr*addr,socklen_taddrlen)
{
LOGDD("HOOK
====>newconnect****************");
charip[128]={0};
intport=-1;
if(addr->sa_family==AF_INET)
{
structsockaddr_in*sa4=(structsockaddr_in*)addr;
inet_ntop(AF_INET,(void*)(structsockaddr*)&sa4->sin_addr,ip,128);
port=ntohs(sa4->sin_port);
LOGDD("AF_INETIP===>%s:%d",ip,port);
}
elseif(addr->sa_family==AF_INET6)
{
structsockaddr_in6*sa6=(structsockaddr_in6*)addr;
char*ipv6=NULL;
inet_ntop(AF_INET6,(void*)(structsockaddr*)&sa6->sin6_addr,ip,128);
ipv6=strstr(ip,"f:");
if(NULL!=ipv6)
{
strcpy(ip,ipv6+2);
}
port=ntohs(sa6->sin6_port);
LOGDD("af_inet6
IP===>%s:%d",ip,port);
}
else
{
returnold_connect(sockfd,addr,addrlen);
}
if(strcmp(ip,"115.23.20.178")==0)
{
LOGDD("%s
==>127.0.0.1",ip);
structsockaddr_inmy_addr;
intmy_len=sizeof(structsockaddr_in);
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(80);
my_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
returnold_connect(sockfd,(constsockaddr*)&my_addr,sizeof(my_addr));
}
else
{
returnold_connect(sockfd,addr,addrlen);
}
}
4.攔截connect函數功效
1)禁用應用網路訪問。
2)過濾廣告ip
3)禁用定位功能
Ⅳ 按鍵精靈win7 vpn撥號連接與斷開,判斷是否換好!求思路或者源碼,謝謝
【奔騰IP加速器】
奔騰vpn做好IP互轉的功能,
使用奔騰網路加速器可以突破防火牆限制達到你想更換的IP地址,
擁有國內各省市線路多IP地址5000條IP地址,國外7000條IP地址,
強大的各地區伺服器支持,擁有100M獨立伺服器帶寬支持,
不限制流量,不限制下載速度。有效支持5000多款網路游戲和15000多款網頁游戲。
賬號btvpn456 密碼btvpn456(網路搜索下載奔騰vpn)
求採納
Ⅵ 我想自己用伺服器搭建個網盤,請問要用什麼伺服器的軟體或者用什麼方法可以把區域網共享盤遠程到外網
樓上回答的好像跑題了吧,人家問的是軟體,你回答的是源碼。好像提問的不是要搞軟體開發的~~~
把區域網中的某台電腦上某個文件夾對外網開放,架個FTP伺服器就可以了。免費的FTP軟體非常多,也都十分簡單。不過,軟體安裝配置好後你要在你那路由器上做好埠映射。如果FTP軟體那邊你沒有修改埠的話,一般默認是23埠。在路由器上把這端號映射到你自己這台電腦上就可以了。
另外如果你共享的使用對像是固定的話,你架個VPN也可以實現,但VPN好像比FTP要復雜一點。
以前的QQ也有個「我的共享」功能也可以臨時實現你要的那種效果,但好像現在QQ把這個取消了。
Ⅶ 尋找游戲對戰平台源碼
給錢還差不多!
可能使用api hook技術,攔截網路包自己轉發可以做到
Ⅷ openWRT系統特點
對於開發人員,OpenWrt是使用框架來構建應用程序,而無需建立一個完整的固件來支持;對於用戶來說,這意味著其擁有完全定製的能力,可以用前所未有的方式使用該設備。
二、openWRT開發背景
當Linksys釋放WRT54G/GS的源碼後,網上出現了很多不同版本的Firmware去增強原有的功能。大多數的Firmware都是99%使用Linksys的源碼,只有1%是加上去的,每一種Firmware都是針對特定的市場而設計,這樣做有2個缺點,第一個是難以集合各版本Firmware的長處,第二個是這版本距離Linux正式發行版越來越遠。
OpenWrt選擇了另一條路,它從零開始,一點一點的把各軟體加入進去,使其接近Linksys版Firmware的功能,而OpenWrt的成功之處是它的文件系統是可寫的,開發者無需在每一次修改後重新編譯,令它更像一個小型的Linux電腦系統。
三、OpenWrt功能
1、openwrt可以作為client連接到其他wifi作為WAN,再創建一個自己的wifi作為LAN,相當於有線WAN口不用插網線就能夠實現wifi上網。其他固件好像沒有這種設置方式,不知道是不是我沒有發現。其他固件通常只能中繼別的wifi,客戶端實際連接的是這中繼的wifi,ip也是由上級中繼wifi分配,無法通過這個路由器創建一個子網路。openwrt的好處在於通過wifi連通internet,自己創建一個子網,可以埠映射、限速等。
2、SSH隧道
OpenWrt包含了一個SSH伺服器所以你可以訪問它的終端。把它的SSH服務暴露在網路下之後(別忘了用密鑰驗證而非弱密碼的方式給它加密),你就可以遠程連接並使用SSH隧道加密訪問它。這使得在國外的你可以通過公共Wi-Fi訪問一些只有在國內能訪問的網站。
3、搭建VPN
SSH隧道和VPN在很多方面很相像,但你還是可以在OpenWrt路由上搭建適合自己的VPN。
4、安裝BitTorrent客戶端
如果有特定的網路附加存儲器(NAS),或者一個附帶了USB埠的路由器和一個USB設備,你就可以把路由器當作一個BitTorrent客戶端了。
5、運行伺服器軟體
OpenWrt的軟體源包含了可以讓它作為web伺服器的軟體包,比如IRCserver,BitTorrenttracker,等等。你可能正在使用路由器,那為什麼不幹脆把這台路由當作一台伺服器來用?路由器耗電比計算機少得多,所以把它當作一個輕量級伺服器是很聰明的做法。
6、流量整形服務
OpenWrt讓你可以對經過路由的包進行數據包整形並檢測其服務質量,將合適的數據包優先分配。你甚至可以將指定數據包優先分配給指定計算機,而對分配給其他計算機的包暫緩處理。
7、創建貴賓網路
OpenWrt的wiki有如何建立一個給客人用的特殊無線網路的指示,為了安全,它是從你的主網路分出來的。你甚至可以限制貴賓網路的速度。
8、捕獲並分析網路流量
你可以使用tcpmp來記錄所有經由你路由器的數據包。然後可以分享到網路或者使用類似Wireshark的工具來打開它,進而分析你的網路流量與行為。
四、openWRT特點
OpenWRT是一個高度模塊化、高度自動化的嵌入式Linux系統,擁有強大的網路組件和擴展性,常常被用於工控設備、電話、小型機器人、智能家居、路由器以及VOIP設備中。同時,它還提供了100多個已編譯好的軟體,而且數量還在不斷增加,而OpenWrtSDK更簡化了開發軟體的工序。
OpenWRT不同於其他許多用於路由器的發行版,它是一個從零開始編寫的、功能齊全的、容易修改的路由器操作系統。實際上,這意味著您能夠使用您想要的功能而不加進其他的累贅,而支持這些功能工作的linuxkernel又遠比絕大多數發行版來得新。
Ⅸ 如何獲取最新chromium源碼
獲取代碼
dev.chromium.org/developers/how-tos/get-the-code 上已經寫清楚了如何獲取代碼。現在統一都是用git了。
首要要配置好depot_tools。chromium會用depot_tools去獲取代碼。這個基本上按著文檔來。因為中國的網路問題,獲取
chromium代碼經常失敗,這里強力推薦用vpn。有些公司會屏蔽vpn,比如我們公司。這里只能用IE代理了,但是chromium獲取代碼很多地
方沒有走IE代理,這里需要我們自己去hook下腳本了,我曾經寫過如何設置代理的博客。這種方法太麻煩。
獲取代碼現在真是簡單,就一句 fetch chromium,然後慢慢等吧,會下載十幾GB的數據。只要把網路問題解決了,獲取代碼還是比較順利的,否則就是無法跨越的大坑。
Ⅹ 查看PPTP,L2TP,IPSec和OpenVPN的區別的源代碼
前面的 和後面的沒關系
pptp 普通的經過加密的vpn 加密的內容可以被破解
L2tp ipsec 經過加密的vpn 比pptp更強 有沒有破解就不清楚了
openvpn 國外的開源項目,有沒有被破解只有破解的人知道惡劣