家庭網絡中的服務器怎么對外提供服務?
- 方案1 DDNS(家庭網絡需要有公網ip)
- 方案2 內網穿透(需要有一臺公網ip的服務器)
方案1 DDNS(家庭網絡需要有公網ip)
??怎么判斷是否有公網ip?大致的流程就是光貓改橋接,由光貓撥號改為路由器撥號,在路由器管理頁面查看撥號獲取的ip,用這個ip去ip查詢網站驗證,具體的操作可自行搜索,這里不進行贅述了。
??我們都知道,ip有兩種,ipv4和ipv6
??網絡運營商一般都會分配ipv6,在路由器開啟ipv6即可
??使用ipv6的話,有一個缺點,如果訪問用戶沒有ipv6,就無法訪問你的服務器
??公網ip固定的情況下其實也沒什么可說的,直接配置域名解析即可。家庭網絡ip不固定的情況下,可以使用ddns服務,推薦ddns-go
https://github.com/jeessy2/ddns-go
??ddns的作用是將動態的公網 IPv4 或 IPv6 地址映射到固定的域名解析服務上
??這個ddns需要安裝,也可以選擇更加輕量級的就是使用路由器的ddns服務
方案2 內網穿透(需要有一臺公網ip的服務器)
推薦工具frp https://github.com/fatedier/frp
gofrp文檔 https://gofrp.org/zh-cn/docs/
??有客戶端,服務端,服務端需要部署到公網ip的服務器上,域名解析到公網ip即可,根據文檔進行配置,也可以直接抄我的配置
frps.toml 服務端配置
bindPort = 7000 # 必填,綁定端口,客戶端需要連接這個端口,進行通信
vhostHTTPPort = 18080 # http代理監聽端口[auth]
token = "asdfasdfasdfs" # 必填,token,必須設置,不然誰都可以連你的frps了[webServer] # Dashboard 相關配置,查看信息用的
addr = "0.0.0.0"
port = 7001
user = 'user'
password = 'password'
frpc.toml 客戶端配置
user = "local-server"# 名稱,自定義隨便寫
serverAddr = "xx.xx.xx.xx"# 必填,公網ip服務器
serverPort = 7000# 必填,服務端的bindPort[auth]
token = "asdfasdfasdfs"# 服務端配置的token[webServer] # Dashboard 相關配置,查看信息用的
addr = '0.0.0.0'
port = 7001
user = 'user'
password = 'password'[[proxies]] # 代理相關設置,訪問服務端的6022端口,就會將請求轉發到你本機的22端口
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6022[[proxies]]# 代理相關設置,訪問服務端的18080端口,就會將請求轉發到你本機的80端口
name = "http"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains=["www.domains.com"] # 綁定的域名,必須配置,新增域名這里也需要修改
檢查你的配置是否正確
./frps verify -c frps.toml
??用戶訪問這個域名www.domains.com:18080 的時候,就會將請求轉發到你家庭網絡中的服務器上,但是如果我們想要不加這個端口訪問的話,可以在公網ip服務器上加一層nginx作為反向代理,將80/443的請求轉發到18080即可