1. 程式人生 > >簡單破解學院認證WIFI—樹莓派搭建VPN伺服器

簡單破解學院認證WIFI—樹莓派搭建VPN伺服器

科學技術是第一生產力。

science and technology are primary productive force

最近學校網路升級,網費增加,網速賊慢,這讓原本就不多的生活費變得更少了,為了能有更多的錢去泡妞,決定利用自己的專業知識來實現免費上網的功能。

其實校園裡面學校已經完成了整個區域網的路由中繼工作,並且存在一個開放的wifi——zjc-wifi。但是連上這個wifi後就需要你輸入帳號密碼進行登陸,登陸通過之後開始扣錢,但是最坑爹的是這個網路是對老師開放的,也就是說要登陸這個網路並上網,是需要用老師的帳號,學生的帳號會給你一段提示——“對不起該帳號只能在特定IP段使用”。去你妹的,老師辦公室有WFI誰會用這個玩意兒,簡直就是雞肋。

但是雞肋只要做的好,照樣可以美味可口,那麼今天就來做一道美味。

首先,來講一下大致的思路,我們需要找到一個有網線的地方,其次我們需要搭建一個VPN的伺服器,並且讓這個伺服器接入到學校覆蓋的zjc-wifi中,然後獲取到伺服器在zjc-wifi的ip,之後就可以在裝置上通過VPN連結到自己搭建的這臺伺服器上,通過伺服器的路由轉發,把從wifi過來的資料包從網線口轉發出去。

整個過程和大家以前用VPN進行科學上網的步驟很像,只不過科學上網是找一個沒有被防火牆遮蔽的國外ip,vpn連結,連結到國外的網路上。而我i們這裡是找一根防火牆合法通過的網線,vpn連結,連結到學校外面的網上。

之前學校給我們團隊的工作室有一根從隔壁教師辦公室脫過來的網線,教師辦公室24小時有網,就用這個來作為連結外面世界的通道,再之後我的手頭上有一隻樹莓派,可以用它來搭建需要的伺服器,不過樹莓派需要新增一張usb無線網絡卡來連結校園的wifi。

裝好了樹莓派之後,我們需要在樹莓派上安裝pptpd服務(這個比較簡單,openvpn還要有特定的客戶端支援,為了上個網不用那麼規範),在終端輸入:

sudo apt-get update
  • 1

用來更新軟體源列表

然後輸入

sudo apt-get install pptpd
  • 1

回車之後就會開始安裝 
安裝完成之後需要編輯pptpd服務的配置檔案

sudo vim /etc/pptpd.conf
  • 1

開啟/etc/pptpd.conf找到

#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
  • 1
  • 2

這兩行把前面的#去掉,然後儲存。 
這裡,localip 是 VPN 連結成功後伺服器的 ip 地址, remoteip 則是客戶端的可分配 ip 地址範圍。

然後再要編輯/etc/ppp/pptpd-options這個檔案,為vpn指定DNS伺服器, 你可以找到你伺服器用的DNS伺服器地址。

sudo vim /etc/ppp/pptpd-options
  • 1

找到

#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
  • 1
  • 2

同樣去掉開頭的# 
可以把後面的地址改成自己DNS伺服器的地址,因為我i們學校內網已經設定了DNS,所以就用這個預設的了。

之後就要新增vpn帳號密碼,登陸就是用這個帳號 
修改/etc/ppp/chap-secrets檔案

sudo vim /etc/ppp/chap-secrets
  • 1

新增的格式以:

userName<Tab>serverName<Tab>password<Tab>IPAddress
  • 1

serverName 和 IPaddress推薦使用*這樣的話系統會預設分配 
也就是,類似於這樣: 
edmond<Tab>*<Tab>12345678<Tab>*

注:就是鍵盤上的Tab鍵

然後輸入

ifconfig
  • 1

檢視自己的ip地址 

會出現下面的介面 
注意要看的是wlan0的ip地址,這個才是伺服器在學校wifi中的ip那麼VPN的伺服器地址就是這個。

到此伺服器配置完成大半部分了,下面開始講客戶端的連結(實驗下是否連結成功):

    在自己的電腦上配置VPN連結,這裡以ubuntu16.04為例(IOS  Android Windows等系統用系統自帶的VPN連結即可): 
點選右上角的wifi圖示 
wifi圖表 
然後下拉VPN Connections - > Configure VPN

網路配置 
出現這個介面,點選右上角的 Add

新建連結 
選擇PPTP後點擊create

配置基本資訊 
根據自己的資訊配置完基本資訊後,需要點選Advanced

這裡寫圖片描述 
勾選use Point-to-Point encryption (MPPE) 
儲存之後就可以通過wifi按鈕-> VPN Connections,點選需要連結的VPN的名字就可以連結了。

但是你會發現即便現在VPN連上了,但是還是沒有辦法連上外網,那是因為我們的伺服器現在還沒有路由轉發功能,所以接下來要配置伺服器的轉發,這個我們用iptables來實現。 
在終端輸入:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
  • 1
  • 2
  • 3
  • 4
  • 5

然後我們需要讓系統支援路由轉發,編輯/etc/sysctl.conf找到:

# net.ipv4.ip_forward=1
  • 1

把前面的#去掉,儲存退出

這樣我們現在就已經可以上網了,不過如果伺服器重啟,那麼pptpd服務是不會開機啟動,並且iptables的配置都會失效,所以接下來要讓pptpd服務開機啟動,我們需要安裝sysv-rc-conf

sudo apt-get install sysv-rc-conf
  • 1

然後以啟動sysv-rc-conf,會出現這裡寫圖片描述

找到pptpd這個服務,按空格鍵,可以切換是否為X,2 3 4 5都選為X 
這裡寫圖片描述

然後按q退出,這樣在系統啟動的時候就會預設啟動pptpd服務了。

接著我們要將iptables的策略儲存到檔案當中,以便開機時可以載入,

sudo sh "iptables-save > /etc/init.d/iptables.up.rules"
  • 1

用這個命令把iptables策略儲存到/etc/init.d/iptables.up.rules檔案中,檔名可以自己取。 
最後就是需要在開機的時候讓iptables去載入這個檔案,大部分的教程會 
讓使用者去修改/etc/network/interfaces檔案,在檔案的最後添上

pre-up iptables-restore < /etc/init.d/iptables.up.rules
  • 1

來載入策略到iptables-restore中,但是我嘗試之後發現並沒有起效果,於是用了下面的解決方案: 
在/etc/rc.local檔案中,在exit0之前,添加了

sudo iptables-restore < /etc/init.d/iptables.up.rules
  • 1

以執行命令的方式來載入iptables策略。

這樣完成之後,VPN伺服器就搭建完成了,就算重啟,所有的服務和配置也都會生效。

以後終於不用在給學校衝網費了,以前大家都不會想連的校園wifi現在變成了我們的免費wifi,真正為學校實現了校園wifi全覆蓋,幫他們解決了這個技術問題,學校是不是應該給我們點錢呢……^_^