匿名上網不是夢,Raspberry Pi TOR/VPN路由器助你圓夢

五月 19, 2015
Facebook
Twitter
你想要安全上網嗎?自行攜帶WiFi VPN/TOR路由器吧!Raspberry Pi結合Linux作業系統,還有其他額外的軟體,可連接任何VPN伺服器。VPN連線進而加密流量,不僅駭客和間諜無法得知你瀏覽哪些網站,就連你所拜訪的網站,也無法辨識你從哪部電腦上網。


這項專題的材料有1個Raspberry Pi、2個USB無線網卡、1張記憶卡、1個電源插頭。

就算找不到乙太網路,路由器也可自行建立連線,亦可連接任何WiFi網路,作為個人WiFi網路基地臺和不安全WiFi網路的橋樑,光是這個路由器,就可以涵蓋整個房間。

設定完成後,在WiFi裝置建立被動型VPN連線,一旦VPN連線中斷,電腦網路連線立刻中斷,以免未加密資料外洩。

如果你還嫌不夠,這款路由器也可能支援TOR,讓你在網路世界深潛。

有了開放原始碼軟體鼎力相助,你的裝置可以掌控多個WiFi連線。無論走到哪裡,你都可以連接WiFi網路基地臺,透過VPN為網路加密。

當朋友來訪,就算他們不會設定,也可以連接安全的網路。此外,就算不在美國境內,你也可以連接Hulu、Netflix、HBO等網站,或者觀賞你喜愛球隊的比賽。如果這樣還不夠,不妨加入以網域為基礎的阻擋廣告功能,利用bind即時攔截網路廣告。

好好享受設定隨身WiFi VPN/TOR路由器的樂趣吧!

難度:中級
成本:60~80美元
時間:1~4小時
材料

  • Raspberry Pi BB+如果要連接WiFi網路基地臺,Raspberry Pi還要有USB插孔
  • 記憶卡(4G以上), Raspberry Pi B+採用Micro SDRaspberry Pi B則是普通記憶卡
  • Edimax USB無線網卡EW-811UN2
  • MicroUSB電壓轉換器,5V
  • Raspberry Pi外殼

工具

  • 記憶卡讀/寫卡機
  • 轉換器(HDMIRCA轉為VGADVI
  • USB鍵盤
  • VGA螢幕



步驟一:快閃記憶卡

  • 把記憶卡(還有讀卡機)插到電腦。
  • 這項專題採用Raspbian Linux 系統,這是Linux為Raspberry Pi發行的系統,不僅檔案小,也跟Debian相容。前往 raspberrypi.org/downloads下載Raspbian ZIP。下載成功後,解壓縮會看到映像檔,把映像檔複製到記憶卡。
  • Raspberry Pi網站清楚說明安裝影像的步驟。基本上,你可以利用下列指令,來操控MacLinux系統終端機:
    $ sudo dd if=/path/to/raspbian-image.img of=/dev/name-of-sd-card-disk
    若換成Windows系統,不妨採用 Win32DiskImager程式,方便你拖曳 Raspbian映像檔,放到目標磁碟中。
  • 映像檔複製完成後,該是組裝的時候了。把Raspberry Pi塞入外殼中,插上USB無線網卡和記憶卡,插好螢幕、鍵盤和電壓轉換器,接著就是開機。

步驟二:啟動Raspberry Pi

  • 第一次啟動Raspberry,raspi-config會帶領你完成設定,讓你更改使用者密碼、超頻Raspberry Pi、設定桌面環境。
  • 在這個專題,你必須更改使用者密碼、擴充磁碟並選擇「命令行」(command line)作為開機環境。如果你住在英國以外的地方,還要更改國際設定(鍵盤、時區和地點)。
  • 你可能還想驅動SSH,這樣就算沒有螢幕和鍵盤,存取Raspberry也不會有問題。退出的時候,畫面自動切換到控制臺,登入時輸入使用者名稱「pi」,還有自訂的密碼。

步驟三:連接網路

图片

  • 連接乙太網路很簡單;只要插好乙太網路線,Raspberry Pi就會自己連線。連接WiFi比較困難,目前有幾種WiFi和加密方式,每一種在Linux系統的設定都有些微差異。
  • 為了指示Raspberry Pi連接無線網路,你必須編輯/etc/network/interfaces檔案。
    $ sudo nano –w /etc/network/interfaces
    在這個檔案,你可以設定連接WPA、WEP和開放無線網路的規則。
  • 你設定這個檔案的方式,取決於無線網路基地臺的加密方式。 [protected-iframe id=”37bc87e7b65f9fcd08c96ae5c3c32bdd-30206320-62929444″ info=”37bc87e7b65f9fcd08c96ae5c3c32bdd” ] 舉例來說,連接WPA Wi-Fi網路,這個檔案會是下列內容:
    allow-hotplug wlan0 # detect WiFi adapter
    iface wlan0 inet dhcp # connect WiFi with DHCP
    wpa-ssid “myhostnetwork” # WPA access point name
    wpa-psk “myhostpassword” # WPA access point password
  • 手動重啟WiFi,讓Raspberry Pi連接網路。
    $ sudo ifdown wlan0
    $ sudo ifup wlan0
  • 你可以連接網站或執行下列指令,確定連線成功與否:
    $ ifconfig wlan0

步驟四:建立網路基地臺

  • 我們先更新套件清單
    $ sudo apt-get update
    有了網路基地臺,電腦才能透過WiFi連線。我們會採用hostapd 套件,來建立網路基地臺和ISC-DHCP伺服器,提供連接網路基地臺的電腦IP位址。
  • 安裝網路基地臺:你需要量身訂製的hostapd,還有支援Edimax無線網卡的網路基地臺軟體。安裝時間大約10分鐘。
    $ wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
    $ tar -zxvf v1.1.tar.gz
    $ cd RTL8188-hostapd-1.1/hostapd
    $ make
    $ sudo make install

    通知hostapd網路基地臺的名稱和密碼,還有Wi-Fi管理裝置的名稱:
    $ sudo nano –w /etc/hostapd/hostapd.conf
    更改/etc/hostapd/hostapd.conf三行如下:
    interface=wlan1
    ssid=mySecureRouter
    wpa_passphrase=mySecurePassword

    最後啟動hostapd,並加入開機後啟動服務:
    $ sudo service hostapd start
    $ sudo update-rc.d hostapd enable
  • 安裝DHCP伺服器,安裝dnsmasq:
    $ sudo apt-get install dnsmasq
    我們通知DHCP伺服器,其所控制的IP位置介於192.168.0.10和192.168.0.200之間,Raspberry Pi路由器IP為192.168.0.1。這會設定成「授權」伺服器,採用wlan1裝置,強迫用戶捨棄過期的IP位址。
    $ sudo nano–w /etc/dnsmasq.d/dnsmasq.custom.conf
    把下列編碼加入/etc/dnsmasq.d/dnsmasq.custom.conf:
    interface=wlan1 dhcp-range=wlan1,192.168.10.10,192.168.10.200,2h
    dhcp-range=wlan1,192.168.10.10,192.168.10.200,2h
    dhcp-option=3,192.168.10.1 # our router
    dhcp-option=6,192.168.10.1 # our DNS Server
    dhcp-authoritative # force clients to grab a new IP
  • 設定DHCP伺服器,利用wlan1裝置來管理DHCP要求:
    $ sudo nano -w /etc/resolv.conf
    在/etc/resolv.conf檔案加上下列編碼,把DNS導向Google公共DNS伺服器:
    nameserver 192.168.1.1
    nameserver 8.8.8.8
    nameserver 8.8.8.4
  • 現在設定wlan1裝置,以固定IP位址192.168.0.1開機載入:
    $ sudo –w nano /etc/network/interfaces
    加入下列編碼:
    iface wlan1 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    最後,重新啓動wlan1 無線網卡:
    $ sudo ifdown wlan1
    $ sudo ifup wlan1 
  • 現在啟動DHCP伺服器,並加入開機後啓動服務:
    $ sudo service dnsmasq start
    $ sudo update-rc.d dnsmasq enable
    你會在電腦看到「mySecureRouter」的無線網路基地臺名稱,以WPA2加密方式連接該網路,並且輸入密碼「mySecurePassward」。

步驟五:連接VPN或TOR

  • 現在我們來到重頭戲:網路加密連線!VPNTOR都是加密技術,以免網路瀏覽受到監視。同一個網路連線,很難同時採用TORVPN,所以只能擇一。
  • TOR vs VPNTOR又稱洋蔥路由器,這項技術加密網路資料後,透過電腦網路從網站來回傳播資料,如圖一所示。TOR很容易安裝,但前提是使用支援TOR的網路瀏覽器。TOR速度比較慢,因為電腦連接到網站前,TOR會在網路上的隨機節點,加密並路由你的網路流量。TOR也讓你存取網路的隱蔽層,又稱暗網,這是VPN做不到的。
  • VPN又稱虛擬私人網路,以被動的方式,在電腦和網站之間建立單一加密通道,如圖二所示。如果你相信自己的VPN伺服器,VPN會比TOR更安全。VPN比較難設定,但不需要其他特殊軟體。首先,你在VPN伺服器要有帳號,還要在VPN伺服器產生幾個檔案,來確認你的帳號。你必須相信VPN伺服器不是在記錄你或發布你的個資。如果你不想付費使用VPN服務,或者你想學會建立自己的VPN伺服器,可以上這個
  • 先來安裝TOR軟體:
    $ sudo apt-get install tor
    啟動TOR,設定為開機後啟動服務:
    $ sudo service tor start
    $ sudo update-rc.d tor enable
    最後在你上網的電腦,安裝TOR網路瀏覽器,從torproject.org下載。
  • 安裝VPNLinux可輕鬆支援OpenVPN,許多VPN供應商也支援OpenVPN協定。為了連接VPN,你需要VPN供應商的資訊(例如憑證),也可能需要使用者名稱和密碼。你還要知道VPN伺服器的網域名稱、通訊埠(通常為1194)和協定(通常是UDP)。
    安裝OpenVPN:
    $ sudo apt-get install openvpn
    VPN供應商提供你的憑證,你可以存為/etc/openvpn/ca.crt。如果供應商還提供使用者名稱和密碼,請放在/etc/openvpn/auth.txtauth.txt就像這樣:
    myVPNUserName
    myVPNPassword
     
    設定OpenVPN,連接到VPN伺服器
    $ sudo nano –w /etc/openvpn/client.conf
    雖然VPN設定取決於伺服器設定,但/etc/openvpn/client.conf的版本只有一種,如下所示:
    client # client mode
    dev tun
    proto udp # this must match the server’s protocol
    remote vpn-server.example.com 1194 # must match the server
    resolv-retry infinite # reconnect when disconnected
    nobind
    persist-key
    persist-tun
    ca ca.crt # this file is given by the server
    #cert client.crt # uncomment if the VPN server requires a client.crt
    #key client.key # uncomment if the VPN server requires a client.key
    ns-cert-type server
    #comp-lzo # uncomment if the server supports lzo compression
    #auth-user-pass auth.txt # uncomment if your server requires a username and password
    script-security 3 # must match the server’s script security setting
    keepalive 5 30 # keep connection alive
    verb 3
    log-append /var/log/openvpn-client.log
     
    時戳沒有對好,OpenVPN仍然不會運轉。Raspberry Pi沒有即時時鐘,你必須利用網路時間協定(NTP)服務。
    $ sudo service ntp start
    $ sudo update-rc.d ntp enable
    啟動OpenVPN客戶端,設定為開機後啓動服務:
    $ sudo service openvpn start
    $ sudo update-rc.d openvpn enable
    一旦完成連線,你可以透過路由追蹤(traceroute)來測試你的連線,把網路連線路徑導向makezine.staging.wpengine.com。這時候,你正在連接 VPN預設伺服器10.0.0.1

步驟六:設定路由

  • 路由是電腦和網路之間的橋樑,把電腦傳給Raspberry Pi的數據,進一步傳送到網站上。如果網站有回應,數據就會傳回你的Raspberry Pi。Raspberry Pi弄清楚這個回應是針對哪個無線客戶端,接著傳回你的電腦。
  • 如果你設定好VPN或TOR,這些數據還會透過加密服務傳輸,這會用到iptables軟體。我們必須設定好規則,Raspberry Pi才知道如何引導數據的路徑。我們來啟動路由吧:
    $ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    通知Linux記得這項變更:
    $ sudo nano /etc/sysctl.conf
    在這個檔案移除(uncomment)下列內容:
    net.ipv4.ip_forward=1
  • 你會透過哪個路由裝置,取決於你怎麼連線到Raspberry Pi(VPN、TOR、乙太或WiFi)。根據連線方法來選擇路由裝置: [protected-iframe id=”65ac4502bc06dd3c23837be5405ed3e6-30206320-62929444″ info=”65ac4502bc06dd3c23837be5405ed3e6″ ]
  • 趁電腦連線的時候,通知Linux啟動偽裝(masquerade)功能:
    $ sudo iptables –t nat –A POSTROUTING –o tun0 -j MASQUERADE
    通知Linux把所有流量導向網路:
    $ sudo iptables –A FORWARD –i wlan1 –o tun0 -j ACCEPT
    最後,通知Linux把傳回的數據,轉交給合適的客戶端:
    $ sudo iptables –A FORWARD –i tun0 -o wlan1 –m state –state RELATED,ESTABLISHED –j ACCEPT
    儲存這些設定,以便下一次重新開機:
    $ sudo sh –c “iptables-save > /etc/iptables.restore”
    $ echo “up iptables-restore < /etc/iptables.restore” | sudo tee –append /etc/network/interfaces

步驟七:連接WiFi客戶端

  • 電腦繼續開著,試著連接無線網路基地臺。基地臺名稱:mySecureRouter,密碼:mySecurePassword
  • 你會發現電腦利用ARP指令連接Raspberry Pi
    $ sudo arp –i wlan1
  • 你設定好Raspberry PiTOR,也要在電腦安裝TOR網路瀏覽器。


TONY GAITATZIS
托尼.蓋塔茲斯
最近我忙著處理新創公司NetNinja,NetNinja專門建立高安全性的加密VPN/TOR路由器。我從國小就開始寫程式,網路版應用程式、行動應用程式、生物感測器和穿戴式裝置都有涉獵。如果我不在房間抽水煙、玩吉他或當駭客,就是到舊金山和全球的花花世界,盡情跳舞或為民除害。


(譯:謝明珊)

Social media & sharing icons powered by UltimatelySocial