之前聊過(guò)暴露服務(wù)器到外網(wǎng),比如有公網(wǎng)IP通過(guò)NAT或DMZ方式暴露機(jī)器到公網(wǎng),那還多余搭建VPN干啥, 從某些角度看確實(shí)有相同的地方,比如都可以從外網(wǎng)訪(fǎng)問(wèn)到內(nèi)網(wǎng)機(jī)器,但是VPN更像是把外網(wǎng)的機(jī)器虛擬的放到內(nèi)網(wǎng)中,這樣就可以訪(fǎng)問(wèn)內(nèi)網(wǎng)中的任何設(shè)備了.
如果服務(wù)端部署在公司機(jī)器上,那么有疫情就可以居家辦公了.
如果服務(wù)端部署在家庭網(wǎng)中樹(shù)莓派或閑置機(jī)器,也可以隨時(shí)訪(fǎng)問(wèn)家中的設(shè)備了.如遠(yuǎn)程養(yǎng)魚(yú)等.
今天使用的是Docker來(lái)搭建,需要基本的Docker使用知識(shí),以下操作基于Debian的樹(shù)莓派,centos系統(tǒng)基本一樣,操作步驟超級(jí)簡(jiǎn)單:
0.前提
需要在服務(wù)端提前安裝好Docker,如果不會(huì)操作也可以留言.
1.搭建VPN服務(wù)器
拉取鏡像
docker pull hwdsl2/ipsec-vpn-server:debian |
啟動(dòng)一個(gè)容器實(shí)例
docker run --name ipsec-vpn-server --env-file /usr/local/etc/ipsecVpn.env --restart=always -p 500:500/udp -p 4500:4500/udp -d --privileged hwdsl2/ipsec-vpn-server:debian |
參數(shù)說(shuō)明:
每行后邊的不要去掉,它表示一條命令沒(méi)結(jié)束,在下一行繼續(xù)
--name 表示啟動(dòng)后實(shí)例的名稱(chēng)
--env-file 表示配置文件的位置,可配置用戶(hù)名密碼,密鑰等,參考如下, VPN_IPSEC_PSK的長(zhǎng)度至少20位
VPN_IPSEC_PSK=abcx1x2x3x4x5xx67890x VPN_USER=test VPN_PASSword=testvpn123 |
--restart 表示每次啟動(dòng)docker服務(wù)后自動(dòng)啟動(dòng)這個(gè)實(shí)例
-p 表示把容器中的端口映射到主機(jī)的對(duì)應(yīng)端口上
啟動(dòng)后驗(yàn)證是否啟動(dòng)成功,可以用docker ps 命令, 也可以?.NETstat查看端口是否在監(jiān)聽(tīng)
更深入的操作參考
https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README-zh.md
2.防火墻開(kāi)端口
執(zhí)行如下兩行命令
ufw allow 500/udp comment 'docker的VPN使用' ufw allow 4500/udp comment 'docker的VPN使用' |
如果是CenterOs系列,則用Firewall-cmd開(kāi)端口
3.客戶(hù)連連接
可以是mac,windows,linux,鴻蒙,Android,IOS等.
參考
https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md
如果Mac之前連過(guò)無(wú)密鑰的VPN,請(qǐng)檢查文件/etc/ppp/options ,本次連接VPN請(qǐng)注釋掉 #l2tpnoipsec
當(dāng)然如果內(nèi)網(wǎng)中沒(méi)有公網(wǎng)IP可以通過(guò)frp映射相應(yīng)端口到有公網(wǎng)IP的機(jī)器上 (如VPS)也一樣.參考<<沒(méi)有公網(wǎng)IP的機(jī)器如何能被外網(wǎng)訪(fǎng)問(wèn)>>
擴(kuò)展:
如果公司網(wǎng)絡(luò)限制訪(fǎng)問(wèn)視頻音樂(lè)等網(wǎng)站,則連接VPN后即可突破此限制,且手機(jī)亦同理.
如果有國(guó)外的VPS, 那么科學(xué)上網(wǎng)也是一樣的道理
-----------------end-----------------