概述
- 在非局域網環境想要訪問家中局域網機器的方案:
- 方案一:運營商側開通固定IP,現在一般很少提供給家用寬帶,所以文中不提及這種方案
- 方案二:使用內網穿透
- 方案三:搭建虛擬局域網
- 方案四:域名綁定IPV6(推薦)
方案二
使用花生殼等第三方提供的軟件,優點是簡單方便,但是缺點也很明顯:流量較少、帶寬較低。也可充值解鎖更高的體驗
frp內網穿透工具
- 需要一台公網服務器作為出入口
- 安裝frp的方法網上很多,這裏我們提供docker以及docker-compose的方法,沒有docker基礎的小夥伴可以去我docker文章瞭解或者使用別的原生安裝方式
服務端frps
步驟
- 任意位置創建文件夾frps
- 在文件夾下創建文件frps.ini
[common]
# 監聽端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登錄面板賬號設置
dashboard_user = admin
dashboard_pwd = 密碼
# 設置http及https協議下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081
# 身份驗證
token = 12345678
- 運行容器
服務器鏡像:snowdreamtech/frps
重啓:always
網絡模式:host
docker run --restart=always --network host -d -v /usr/local/docker-mapping/frps/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
本地中轉端frpc
- 任意位置創建文件夾frpc
- 在文件夾下創建文件frpc.ini
[common]
# server_addr為FRPS服務器IP地址
server_addr = xxx.xxx
# server_port為服務端監聽端口,bind_port
server_port = 7000
# 身份驗證
token = 12345678
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2288
# [ssh] 為服務名稱,此處設置為,訪問frp服務端的2288端口時,等同於通過中轉服務器訪問127.0.0.1的22端口。
# type 為連接的類型,此處為tcp
# local_ip 為中轉客户端實際訪問的IP
# local_port 為目標端口
# remote_port 為遠程端口
- 下載鏡像:
docker pull snowdreamtech/frpc
- 若是報“Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker”,修改dns服務器地址:vim /etc/sysconfig/network-scripts/ifcfg-ens33 這裏換成你自己的網卡,然後添加dns地址114,或者8.8.8.8
- 若還是報錯,查看是否有文件vim /etc/resolv.conf,若有也加上(未測試,網上資料這麼説)
- 運行容器
docker run --restart=always --network host -d -v /root/docker-compose/frpc/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc
服務器鏡像:snowdreamtech/frpc
重啓:always
網絡模式:host
也可以使用docker-compose的方式 安裝FRP中轉端(推薦)
- docker-compose.yml
version: '3'
services:
frpc:
image: snowdreamtech/frpc
container_name: frpc
restart: always
network_mode: host
volumes:
- ./frpc.ini:/etc/frp/frpc.ini
- 啓動容器
docker-compose up -d
方案三
搭建虛擬局域網,文中介紹組件:Zerotier
目前沒有找到能夠自行搭建總服務器的辦法,都會走官方服務器,網絡沒有辦法得到保證,所以也沒有深入去研究,不過對於網絡要求沒那麼高的用户來説也夠用
服務端
- 創建(偽)根服務器ztncui
- 項目地址:https://github.com/Jonnyan404/zerotier-planet
docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui
- 初始賬號密碼為:admin mrdoc.fun
- 更改密碼後,創建一個網絡
- 網絡id
- 生成內網ip
創建 moon 服務器
- 項目地址:https://github.com/jonnyan404/docker-zerotier-moon
- 創建容器
docker run --name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /usr/local/docker-mapping/zerotier/:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 xxx.xxx.xxx.xxx公網ip
- 打開公網服務器的9993端口,tcp和udp全部打開
- 查看moon ID
docker logs zerotier-moon
客户端
windows
- 官網下載軟件
- 輸入網絡id
- 在web管理端同意
- Windows 客户端加入moon服務器
cd C:\ProgramData\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]
- 查看連接節點
zerotier-cli listpeers
linux
- 安裝
curl -s https://install.zerotier.com | sudo bash
方案四
這個是目前比較推薦的方案,目前很多設備已經逐步兼容ipv6,且運營商也是免費提供
電腦端
- 在線測試本機是否支持ipv6,若是下圖的結果則説明你的電腦是正常支持ipv6的,若不是則前往網絡和共享中心-更改適配器設置-屬性-Internet協議版本6(TCP/IPv6)中設置開啓
- 使用ipconfig查看ipv6地址(linux是ifconfig)
- 此時便可在任意有網絡的環境使用這個地址對你的電腦進行訪問:[xxxx:8a1e:xxxx:1980:fc3b:9dff:9e1b:xxxx]:端口,若無法訪問可能是路由器端禁止了。
路由器端設置
- 大部分無法訪問,還需要對路由器端進行設置
- 在局域網登錄路由器網關配置頁面,在路由器底部標籤上會有寫,例如:192.168.1.1,賬號密碼標籤上有寫
- 每個路由器需要設置的界面也不一樣,我這邊只需要將 IPv6Session防火牆開關 關掉後重啓即可
- 這裏光貓器是用的路由模式,如果你的局域網是基於光貓拓展的路由器,那麼需要將光貓設置為橋接模式,讓它只負責將光信號轉換為電信號,路由的功能則交給後續路由器。如果局域網是基於光貓的,那麼就無需操作。
- 這個時候沒有了路由器的攔截,你的電腦已經完全暴露在公網之中,雖然説IPV6數量很大難以被發現,但還是儘量做好電腦的防火牆設置,而且要儘量避免將電腦的IPV6地址告知非信任方。
域名
- 這裏我使用的騰訊雲
- 首先要在域名註冊中註冊一個域名,有貴的有便宜的,便宜的幾塊錢一年,看自己的情況選購,記得把自動續費去掉,因為一般第二年嘎嘎貴。
- 支付成功後需要填寫信息審核,這個正常時間段會很快,一小時不到就可以完成
- 然後進入域名管理或者DNSPOD頁面,就能看到自己的域名,點擊解析後添加一條記錄,主機記錄為域名訪問的前綴,類型為AAAA代表IPV6,記錄值為你的IPV6地址
- 點擊確認,數秒後便可使用你的域名進行訪問:demo.你的域名:端口(80等端口一般會被默認禁用,而且IPV6完全暴露公網中,所以儘量避免使用常用端口)
DDNS
- ipv6默認一般是動態的,重新撥號後地址會變,所以我們需要使用域名+DDNS將訪問地址固定
- 這裏我們使用開源項目ddns-go
- 根據自己的設備配置下載對應的包
- 下載後解壓到自己記得住的位置,然後運行ddns-go程序,會自動打開設置頁面,然後填寫賬號密碼後進入(首次進入輸入的賬號密碼則為後續密碼,可在頁面中修改)
- 點擊 創建 DNSPod Token ,跳轉到dnspod頁面,點擊創建密鑰。創建密鑰後,將id和token填入DDNS的配置中,然後將IPV4去掉
- 在IPV6中輸入你的域名
- 點擊保存,現在可以重啓下路由器測一下是否生效了(DDNS同步會有延遲,需要等待幾分鐘)
- 若沒有問題,將程序設置為開機自啓,則大功告成
LINUX環境
- 按照自己的設備,下載對應的包
# 將包放在你覺得合適的位置後解壓
tar -zxvf ddns-go_6.7.7_linux_x86_64.tar.gz
# 配置成服務,自啓動
cd /etc/systemd/system
touch ddns-go.service
vim ddns-go.service
- ddns-go.service文件內容:
[Unit]
Description=ddns-go
[Service]
ExecStart=nnds-go所在路徑
[Install]
WantedBy=multi-user.target
# 服務生效,若非管理員賬號則加sudo
systemctl enable ddns-go.service
systemctl start ddns-go.service
- 此時已經完成,只需要重啓電腦測試一下後進入配置頁面,像windows一樣配置即可
寫在最後
- 本方案適合有一定計算機常識的同學操作。
- 僅技術交流,不對由此產生的任何損失負責。
- 有什麼問題可以留言。
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。