Openvpn-利用Raspberry Pi做具有Openvpn的Gateway
標籤: Gateway, Nordvpn, Openvpn, RaspberryPi樹莓派, Router, shadowsocks, VPN, 路由器

Openvpn-其實我對Openvpn並不陌生,我所使用的Google Home就是使用Openvpn服務,這樣我才能聽國外的音樂串流服務,例如Pandora、iHeartradio等。這次會想要使用Openvpn做Gateway,其實是因為我之前用Shadowsocks Gateway觀看DAZN時的不愉快經驗,Shadowsocks Gateway常常斷線,我需要不停的重新開啟Raspberry Pi,這樣不管是對人還是對機器都是一種很傷的行為,由於國外VPN服務商幾乎都是提供Openvpn的服務,很少有提供Shadowsocks的服務,因此我就決定要使用Openvpn來做Gateway。
不過在開始製作Openvpn Gateway之前,必須要準備以下材料。
- Raspberry Pi 3 (理論上Raspberry Pi 1¡ARaspberry Pi 2或是最新的Raspberry Pi 4都可以使用)版本Raspbian Buster。
- 16GB micro SD記憶卡。
- VPN服務商(本次以Nordvpn為例)。
接下來就可以進行以下步驟囉!
I. 先更新Repository並進行更新作業
Sudo apt update
Sudo apt upgrade
II. 接著安裝Openvpn
sudo apt-get install openvpn
確認Openvpn可以運行
sudo systemctl enable openvpn
III. 下載VPN服務商的設定檔案,這裡以Nordvpn為例
cd /etc/openvpn/
sudo wget https://nordvpn.com/api/files/zip
sudo unzip zip
IV. 創建Nordvpn帳號及密碼的文字檔
sudo nano /etc/openvpn/auth.txt
依照下列格式填寫帳號及密碼
Username
Password
然後按ctrl+x接著按Y,最後再按enter鍵完成存檔
V. 把.opvn設定檔複製至/etc/openvpn目錄下,例如我要日本的伺服器,可填寫如下。各位可以視需求複製不同的.opvn檔。
sudo cp /etc/openvpn/jp202.nordvpn.com.tcp443.ovpn /etc/openvpn/jp202.conf
VI. 接著編輯/etc/openvpn/jp202.conf
sudo nano /etc/openvpn/jp202.conf
找到
auth-user-pass
改為
auth-user-pass /etc/openvpn/auth.txt
然後按ctrl+x接著按Y,最後再按enter鍵完成存檔
VII. 接著編輯/etc/default/openvpn
sudo nano /etc/default/openvpn
找到
#AUTOSTART="all"
改為
AUTOSTART="jp202"
然後按ctrl+x接著按Y,最後再按enter鍵完成存檔
VIII. 然後重新啟動
sudo reboot
接著就要藉由iptables建立規則
I. 先建立轉發規則
sudo /bin/su -c "echo -e '\n#Enable IP Routing\nnet.ipv4.ip_forward = 1' > /etc/sysctl.conf"
可以藉由sudo sysctl -p來檢查是否有更改成功,若成功,應該會顯示
net.ipv4.ip_forward = 1
II. 接下來就輸入下列規則,以下就不多做解釋了。有興趣可以參考這篇文章的解釋(Raspberry Pi VPN Gateway – NordVPN)。
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP
sudo iptables -L
III. 將上述iptables的規則固定。
sudo apt-get install iptables-persistent
IV. 若要更動iptables規則,可在更動完成後鍵入下列指令來更新規則。
sudo systemctl enable netfilter-persistent
接著鍵入sudo reboot重新啟動。
sudo reboot
然後在你的手機或是apple tv將gateway的地方輸入Raspberry Pi的local ip位置(例如192.168.68.103),然後把DNS改為103.86.96.100 or 103.86.99.100,就可以完成設定了。以後在家就不需要開Nordvpn的app也可以達成VPN的功能囉!
另外,如果有訂閱中華電信色情守門員的人,請把色情守門員關掉,否則連不上Nordvpn的官方網站,甚至會影響Nordvpn的運作。
延伸閱讀:
Raspberry Pi VPN Gateway – NordVPN
How to setup NordVPN on the Raspberry Pi
Shadowsocks-利用樹莓派(Raspberry Pi)做具有Shadowsocks功能的Gateway
1 Reply to “Openvpn-利用Raspberry Pi做具有Openvpn的Gateway”