作者彙整: 九条凛

C語言接口遠程讀取MySQL數據實例

  之前在伺服器上搭建了VPN之後,順便寫了一個php的註冊頁面用於註冊VPN的用戶,使用MySQL保存用戶數據。而pptpd和l2tpd服務則在另一台伺服器運行,且通過文件進行用戶驗證。因此需要將用戶密碼表單遠程從MySQL中取出並在VPN伺服器保存為文件。我的解決方案是使用C語音調用MySQL接口然後使用文件流保存,這樣的方案同樣可用於解決架設多節點的VPN服務。

實例代碼如下:

Makefile文件內容如下:

然後只需要再寫一個shell腳本添加到 crontab 定時運行該程式並將輸出的文件移動為 chap-secrets 即可。

簡易的VPN用戶管理系統就大功告成了~

======
kujou_rin

多網卡配置路由同時訪問公司內網和外網

配置路由表可以指定源地址到達目標地址所使用的網關,通俗的說就是多網卡環境中指定到達某個地址的路徑。

一、路由的配置方法:
1、添加路由
路由配置命令為

其中x.x.x.x為目標地址網段,與子網掩碼y.y.y.y配合確定目標地址的範圍。 z.z.z.z為源方出口網關地址。命令需要在(Linux)root權限或(Windows)Administrator權限下運行。
例如

表示當訪問地址網段在 10.12.88.* 時,走 192.168.66.1 網關出口。
再例如

表示僅當訪問 10.12.88.6 是才走 192.168.66.1 網關出口。
2、查看路由
查看路由命令為(Linux) route 以及(Windows) route PRINT ,該命令將會列出本機所配置的所有路由。
3、刪除路由
路由配置的刪除命令為

4、路由的生效問題
路由配置命令運行時將會立即生效,重啟後動態路由將被清空。使之重啟後仍然有效的方法是Windows在命令結尾使用 –p 參數使其永久有效,Linux將此命令加入到/etc/rc.local中(Linux系統啟動時將加載運行此文件中的腳本)。

二、實用配置舉例:
個人電腦插線連線公司局域網,需要訪問公司內部網路某些地址段進行辦公,但是該公司網路無法訪問網際網路(Internet)外網。此時您同時連線了wifi無線用於訪問外網。
有線網卡(公司網)的本機IP是 10.12.3.134,掩碼 255.255.255.0,網關 10.12.3.254。
無線網卡(用於訪問Internet)的本機IP是 192.168.1.102,掩碼 255.255.255.0,網關 192.168.1.1
公司內部網路中辦公需要訪問的地址是 80.10.40.*,以及公司的某台打印機 80.10.8.8
根據以上情況的配置方案:(Windows舉例)

以上命令分別為:
刪除默認路由
設置所有IP地址走無線網卡(用於訪問外網)
設置 80.10.40.* 走有線網卡(用於公司辦公)
設置 80.10.8.8 走有線網卡(用於公司打印機)

======
kujou_rin

Ubuntu搭建PPTP/L2TP類型VPN伺服器

在Ubuntu下搭建VPN伺服器,我們分別搭建PPTP和L2TP兩種類型。

首先我們搭建PPTP伺服器。
下載安裝pptpd:

接下來修改配置腳本,首先在/etc/ppp/options中配置DNS。
將以下兩行的注釋符號刪除並改為你需要的外網DNS:

然後修改pptp配置文件/etc/ppp/pptpd-options,除注釋行外的內容如下:

以及另一個用於pptp分配ip的配置文件/etc/pptpd.conf,在該文件結尾加入:

給pptp連接分配的內部ip地址段請根據需要填寫。
接下來打開路由轉發功能,在/etc/sysctl.conf中找到以下內容將數值改為1:
net.ipv4.ip_forward=1
保存後運行命令生效:
sysctl -p
修改iptable規則NAT轉發以及設置MTU

以上兩行重啟後會失效,很多人的做法是將其保存為iptable rules添加到pre-up中
我的做法比較簡單,直接將這兩行寫入/etc/rc.local結尾(exit之前)。
(注意:eth0是你的公網網卡名稱,請通過ifconfig確認)
然後在/etc/ppp/chap-secrets中添加用戶和密碼。
格式為[用戶名\t連接類型\t密碼\t用戶IP],例如:

使用/etc/init.d/pptpd restart重啟pptpd服務。
至此pptp類型VPN搭建完畢。

接下來搭建L2TP類型VPN。
因為L2TP需要通過IPSec加密,同樣我們下載安裝需要的組建服務:

然後修改配置文件/etc/ipsec.conf,除注釋行外的內容如下:

left處請填寫您本伺服器的IP位址!
接下來修改/etc/xl2tpd/xl2tpd.conf,除注釋行外的內容如下:

ip range處請填寫您需要給l2tp連接分配的內部ip網段。
再修改/etc/ppp/options.xl2tpd,如果沒有可以新建,內容如下:

DNS處可設置您需要分配的DNS地址。
再修改/etc/ipsec.secrets文件設置預設共享密鑰:

前面為本伺服器IP地址,引號內的為您要設置的密鑰
修改網路策略使ipsec能正常運行:

順便也加入到/etc/rc.local中(exit之前)。
以上配置全部完畢後,可以通過ipsec verify命令檢測ipsec運行是否正常。
如果出現Checking for IPsec support in kernel [FAILED],您可能未啟動ipsec服務,通過/etc/init.d/ipsec start啟動。
如果出現NETKEY: Testing XFRM related proc values [FAILED],您可能未修改網路策略。
如果出現Pluto listening for IKE on udp 500 [FAILED],您可能需要安裝apt-get install lsof。
如果沒有出現[FAILED]表示運行正常。
Ubuntu使用apt-get安裝openswan一定會出現Two or more interfaces found, checking IP forwarding [FAILED]。
而且客戶端無法連接,且在/var/log/auth日誌中出現
ERROR: netlink XFRM_MSG_DELPOLICY response for flow eroute_connection delete included errno 2: No such file or directory
那麼原因應該是apt-get到的openswan版本並不能在該Ubuntu上運行,建議去openswan的官網下載2.6.34版本手動編譯安裝。
或在此下載源碼:ftp://ro:[email protected]/openswan_lilith.pro.tar.gz
(這實在非常噁心,因為源碼編譯安裝不是誰都能完成的,注意必須把源碼解壓在/usr/src下並apt-get install libgmp3-dev,以及bison,flex等然後再編譯安裝)
L2TP將和PPTP一樣使用/etc/ppp/chap-secrets作為帳戶密碼文件。
重啟所有服務:

大功告成!

======
kujou_rin

[270424]九条凛の部屋を開催

  經歷了一週的折騰,終於把以前在QQ空間和網易博客寫的所有文章都搬運到了自己的站點上,從05年至今留下的電子格式的博文大約400多篇共36萬字的資料,包括其中的配圖都全部是一篇篇半手動的搬運過來的。至於為什麼沒有寫一個一鍵搬家工具,其一是某些文章中帶有羞恥信息的需要人工審查並刪除,其二是一些失效的鏈接和圖片也要刪除或者替換,當然最重要的一點是本人對於web方面一竅不通,這一點從我自己寫的簡陋的私服註冊頁面也能看得出來。
  手動搬運的過程很漫長但也很有意義,回首自己十年的過往,有喜悅也有憂傷,曾經那些中二的話語令人忍俊不禁,而那些感情的追憶又令人黯然神傷。搬運和整理日記的過程似乎是在看著自己一天天的生活成長直到今天,過去遇到的人和物又一個個從記憶深處重新走了出來,有太多的感情,難以言表。那些舊日記,有對社會百態的針砭時弊,也有記錄平凡日常的點點滴滴。即使有些文章看起來冒著傻氣,我也如實的將它搬運過來,因為它們對於我來說是我不想遺失任何一個的珍貴的至寶。
  當然,這些原本存放於QQ空間和網易博客等地方的文章,在經過一遍遍國內網站自我審查的洗禮,也已經遺失了不少。慶倖的是擁有整理資料強迫症的我,會把每一篇文章都做好備份,這使得不少文章在最近搬運過程中又能夠重建天日。遺憾的是一些文章的配圖並沒有備份,在被QQ空間刪除後也無法恢復,只好作罷。今天搬家完畢也就意味著從此以後可以愉快的和國內各種博客和QQ空間說再見了,從此不需要再浪費時間在令人作嘔的文字遊戲上,也不用再做用同音字代替發表的無聊事情。
  再見了,QQ空間和網易博客。

無名の QQ スクリーンショット270424191341
[圖]紀念一下網易博客的流量,訪問峰值的時間應該是甕安新聞速報。
======
kujou_rin

大陸安卓用戶安裝和使用GooglePlay服務

安卓(Android)系統由Google製造,其官方APP市場是Google Play。但大陸因為屏蔽了Google因此很多安卓手機也閹割了Google的服務,不得不使用安智,小米等第三方市場安裝APP。不僅無法安裝大量APP,也無法及時獲取官方軟體的更新,APP內也無法通過官方途徑進行消費,從第三方市場下載的APP也無法保證沒有被惡意修改。

另外Google服務還可以幫你同步通信錄,日曆和用戶數據,您在任意安卓設備登錄Google帳戶後通信錄將會保持同步。一些遊戲在保存進度和轉移數據時也需要綁定Google帳戶。如果您的設備沒有Google服務,您可以將它們安裝回來,下載下面的壓縮檔案,解壓後放入手機並依次安裝其中的項目。(解壓密碼「lilith.pro」,請使用winrar5或更高版本)

ftp://ro:[email protected]/GoogleApps.rar (此檔案包僅適用於Android4.4)
內含文件如下:
GoogleServicesFramework.apk – 谷歌服務框架(*注1
GoogleLoginService.apk – 谷歌帳戶管理服務(*注1
GoogleContactsSyncAdapter.apk – 谷歌通信錄同步服務(*注1
GoogleCalendarSyncAdapter.apk – 谷歌日曆同步服務(*注1
GmsCore.apk – 谷歌Play服務(*注1
Vending.apk – 谷歌Play市場(*注1

以上全部安裝後打開GooglePlay登入您的谷歌帳戶即可。

注1:此安裝包請務必在以下站點下載,下載時請仔細核對您的安卓版本號。
http://www.apkmirror.com/apk/google-inc/google-play-services/

其他說明:大陸用戶登入Google需要先連線海外VPN,Google帳戶即是您的gmail地址。如果您需要在Google購買付費APP或在遊戲內消費,需要綁定信用卡,綁卡時的IP將決定您的市場區域,綁定後不可修改,美國區將無法下載日本區遊戲,反之亦然。如無消費需要可暫不綁定。

關於VPN的幫助請參閱此文章:https://lilith.pro/gijyutsu/2315
======
kujou_rin

[270328]四面楚歌的中國網路

  有一段時間沒有更新博客和空間了,雖然省下了很多時間用來補番,但是自從我不再繼續在空間寫文之後,朋友們似乎也沒辦法知道自己身邊每天正發生著什麼。周圍的同學和朋友似乎有一大半只有在看我空間和博客的時候才能知道身邊的事情,為什麼外交部會回應西方對中國進行網路攻擊的指責,為什麼Google和Mozilla會同時宣佈吊銷中國互聯網中心證書,為什麼最近一些新聞看的雲裡霧裡。前幾天和朋友聊天的時候發覺似乎我應該重新把寫博客的習慣撿起來了,而且很多朋友也無法通過推特了解我的近況。
  先說說中國最近的網路狀況吧,之前也說道習自從上台以來,外來文化方面一直在收緊,各種外國影視作品也紛紛下架,這其中不乏一些國內企業已經購買過版權的作品。然而在網路方面,除了進行收緊政策以外,由原始的封鎖和禁止改為了主動的襲擊和破壞。之前說過去年中國曾利用中間人攻擊對Outlook,Yahoo,github等進行了攻擊。然後今年一月中國調整G*F*W(國家防火牆)策略,將DNS污染投毒改為隨機的國外ip地址,這些地址中甚至有很多是正常可以訪問的站點。按照過去的方法如果國內用戶訪問臉書推特谷歌等網站,會被引向一個不存在的地址,而現在這些巨大的流量將會引向某個隨機的國外網站,從而造成DDoS攻擊。
  受到攻擊的網站是隨機的,包括一些歐洲的工廠,美國的個人博客,他們的網站在受到這種莫名其妙的待遇之後,大多數都選擇了主動屏蔽中國IP。「中國人禁止入內」的方法不僅在現實中解決了不少問題,在網路上也同樣有效。當然中國的G*F*W也打出了自己的名號從而臭名遠揚,甚至有一位受到攻擊的美國站主主動學習了中文並在博客寫文對G*F*W進行了指責。
無名の QQ スクリーンショット270426215707
[圖]受到攻擊的美國個人網站站長主動學習了中文進行回擊
  然後是三月份,中國的互聯網管理部門又一次給了全世界一個驚喜。CNNIC(中國互聯網信息管理中心)偽造了Google域名證書,劫持https通信,進行中間人攻擊,獲取用戶的密碼等資料,而帶有CNNIC數字簽名的假證書則成為了攻擊事件的鐵證。簡單來說就是被授予合法權力的部門利用權力做了非法的事情,就像民警用萬能鑰匙開了別人家鎖盜竊被人逮著正著。這種行為已經嚴重危害國際互聯網安全,侵犯國內用戶的隱私。並非西方妖魔化中國,而是自己本身就在做著只有恐怖主義才做得出來的事情。因而在四月份Google(chrome瀏覽器)和Mozilla(firefox瀏覽器)宣佈不再信任CNNIC頒發的數字證書,CNNIC回應表示難以接受。
  緊接著三月底,G*F*W劫持了百度統計和百度推廣的流量對github發起了攻擊。G*F*W通過在百度植入惡意代碼,使訪問者自動攻擊目標,也許當時正在訪問百度的你,就是數百萬攻擊者之一。這種惡意攻擊的明目張膽和喪心病狂已經到了任何人都能抓到證據的地步。外交部一直聲稱自己是網路犯罪最大的受害國,而實際上國際互聯網上的大多數攻擊都是由中國發起。筆者也親自嘗試,牆外訪問百度時確實可以在m.js中發現github等字樣,有理由相信中國本次針對github的國家級攻擊是真實可信的。
CBFSMjeUYAAAvKqCBFSOIoUsAAEMhj
[圖]筆者查看m.js腳本時的截圖
  中國對於國際互聯網的肆意攻擊和對國內流量的劫持,就好比不想讓自家孩子上網玩遊戲而去破壞公共光纜一樣,這種危害國際互聯網安全與穩定,挑戰人類科技文明,踐踏人類正義與良知的行為,最終只會讓中國遭到全世界的唾棄。雖然中國一直聲稱這一切種種做法都是為了維護互聯網主權,但是在一個透明公開而公共的地方維護私有權,無異於在大海中圍起來海水不讓其隨意流動,不僅違反自然常識,最後的結果也只是發黴發臭罷了。

======
kujou_rin

使用apache偽靜態使網頁訪問自動跳轉至https

  前幾天給網站申請了ssl證書之後準備實現https訪問,但是如果訪問者直接輸入域名默認訪問的是http頁面。因為子域名的其他站點並不想使用https,因此每個站點要單獨設置。因此要使用apache的偽靜態實現URL重寫,將訪問者的http重寫為https。使用方法如下:
1、在apache配置中開啟apache的mod_rewrite模塊功能(很多時候默認是開啟的)
開啟方法是httpd.conf中增加如下語句並重啟apache:
LoadModule rewrite_module modules/mod_rewrite.so
2、創建一個文件,文件名為 .htaccess 內容如下

以上內容表示當頁面訪問時如果端口不是443則重寫URL跳轉到https
3、將該文件放在要使用https的站點的根目錄中,這樣便可以使訪問自動跳轉到https了。

利用shell腳本對VPN撥入的PPP連接進行限速

  在Linux下使用xl2tpd或pptpd架設VPN服務後,如果需要對撥入的用戶進行限速可以用shell腳本實現。筆者使用tc進行限速,該命令一般預設於Linux中。Linux的VPN在每一個用戶撥入後,會建立一個名為ppp+數字編號的連接並加載 /etc/ppp/ip-up 腳本,因此我們可以把限速的腳本寫在這個文件裡,每次ppp連接建立執行腳本為新連接應用限速規則。
  具體方法是在ip-up的文件末尾加入如下幾行:

  其中down為下行速率,upload為上行速率,這裡的400就是400k/s,iprange是你為撥入用戶分配的ip位址,該位址以外的ip將不受限速規則影響。以上方式筆者在Ubuntu測試通過。

======
kujou_rin

Ubuntu的vi無法使用方向鍵解決辦法

  安裝完Ubuntu14.04之後發現vi打開之後在編輯狀態下無法使用方向鍵操作光標,這是由於默認系統預設的vim版本為common版本,只需刪除後重新安裝即可。
  卸載和安裝方法為:

[261221]遊記隨筆

  其實這次出差還是我第一次越過長江到南方,以前真的一次沒來過長江以南的地區。初來長沙讓我最大不習慣的就是大家說普通話都不怎麼標準,然後出租車總是不喜歡打表。感覺交通和道路都亂糟糟的,市中心太平街的地下通道有很大的尿味和很多垃圾,實在不像個省會城市。
  出差來辦事前兩天緊緊張張,想著兩天跑三個地方最後只辦成兩個。七天之類的小賓館的環境不怎麼樣價錢也不便宜住了兩天還是搬到了招待所,其實挺喜歡招待所的感覺,面積挺大獨立衛生間有個小過道,實木桌椅一看就有招待所的感覺還有免費早餐。
  雖然每天都住長沙,但待在長沙的時間也就一兩天,其他時間都在跑周邊城市,最遠跑到了張家界但是沒去旅遊,一天來回也就只剩幾小時辦事時間。週六休息在長沙市內看了看去了趟太平老街,最著名的小吃是長沙大香腸和臭豆腐。大香腸一根13元如果沒人排隊我絕對不會去買這麼貴一根的烤腸,大概是因為人排隊多到路都堵住了,我才想去買…
  時間不早要趕緊睡覺了,昨天早餐因為手機沒電沒響沒吃到免費早餐!

psb
[圖]湘江,長沙

psb (1)
[圖]太平老街,長沙

psb (2)
[圖]太平老街,長沙

psb (3)
[圖]長沙大香腸門口

psb (4)
[圖]長沙大香腸(13元

[261220]本周行程日記

週一 北京-石家莊
週二 石家莊-北京
週三 北京-長沙
週四 長沙-張家界-長沙
週五 長沙-衡陽-永州-長沙
週六 休息
周日 預計可能順便去下江西
週一到週五都是出差,有點不習慣,還是不怎麼喜歡出門…

psb (2)
[圖]霧霾,河北石家莊

psb (3)
[圖]澧水,湖南張家界

psb (4)
[圖]湘江,湖南衡陽

psb (5)
[圖]湘江,湖南永州