iT邦幫忙

0

使用對外 IP 連到架在 WSL2 的 Next.js 網站

2023-05-28 00:04:231129 瀏覽
  • 分享至 

  • xImage

我把 next.js 網站架在 win10 的 WSL2 內,可以用localhost:3000瀏覽,為了讓對外 ip 可以連到 WSL2 的網站,一開始是使用 IIS + Url Rewrite + Application Request Routing,中華電信的路由器 NAT 設為 10030 連接埠(外部)對應到 80 連接埠(內部),在 WSL2 自動建立監聽127.0.0.1:3000的時候可以從外部 ip 連到網站

然後過了幾天,不知道什麼原因 WSL2 不再監聽127.0.0.1:3000,而是變成監聽[::1]:3000後就沒辦法使用對外 ip 連到網站了

目前變通的作法是移除 IIS,改成使用

netsh interface portproxy add v4tov6 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=[::1]

netsh interface portproxy add v4tov6 listenport=10032 listenaddress=0.0.0.0 connectport=3000 connectaddress=[::1]

就能成功從外部 ip 連到 WSL2 內的網站

上面的內部listenport=3000listenport=10032都已經有使用 NAT 與對外的連接埠進行對應

雖然省事許多,但唯獨

netsh interface portproxy add v4tov6 listenport=80 listenaddress=0.0.0.0 connectport=3000 connectaddress=[::1]

不能從對外 ip 連到網站

我使用netstat -aon | findstr "LISTENING"查看
0.0.0.0:800.0.0.0:30000.0.0.0:10032 都是同一個 PID 在監聽,在工作管理員裡面這個 PID 的處理程序名稱是服務主機: IP HELPER,代表這三個內部連接埠應該都能從外部 IP 連到才對,但只有 3000 跟 10032 內部連接埠所對應的對外連接埠可以成功連上網站,80 內部連接埠所對應的對外連接埠就連不上網站

使用 Firefox 無法連上網站出現的訊息是連線已逾時,伺服器 [對外IP] 花了太久時間還是無回應,Edge 則是嗯...無法連線到此頁面[對外IP] 的回應時間過長

想請教即使有 IP HELPER 監聽0.0.0.0:80,也已經在路由器將對外連接埠與 80 連接埠對應,卻無法像其他被監聽的內部連接埠一樣成功轉發封包的原因可能有哪些呢?

或是有人知道要怎麼避免讓 WSL2 從原本監聽的127.0.0.1:3000自動跳去監聽[::1]:3000嗎?以及讓 WSL 2 從監聽[::1]:3000改回監聽127.0.0.1:3000的方法嗎?

obarisk iT邦研究生 2 級 ‧ 2023-05-29 23:19:55 檢舉
把 ipv6 關掉
127.0.0.1:3000 = [::1]:3000
還有 IPV6 不建議關掉
而是樓主該思考不要再用 這種IP 了
你內部IP多少就用多少,用這種IP 是要幹嘛 ?
你本機IP 是 192.168.1.2 你防火牆那邊就是寫好對應,
你WSL該監聽的是本機IP,而不是LOCALHOST 或是 127.0.0.1 啊,
這是基本網路觀念吧
還有你都NAT 了,外面的要求 不可能NAT過來是 3000 PORT 吧
經過 NAT 就是 80 了,怎麼會是 3000,你在內部 本機IP:3000 絕對不該連的到的
除非你開防火牆透通後,你才能用 外部IP:3000 去連你那台 WSL 網站
iT邦新手 4 級 ‧ 2023-05-31 19:39:36 檢舉
@窮嘶發發發 WSL2 監聽的 ip 是 WSL2 自己決定的,我只在 .wslconfig 這個設定檔把這個設定`localhostforwarding=true`打開而已

只要 wsl2 內有網路服務開始監聽 localhost:3000,wsl2 就會自動幫忙監聽 Win10 的 127.0.0.1:3000 或是 [::1]:3000,我是經由比對 PID 所對應的處理程序名稱來確定的,而且 wsl2 也不會同時監聽,目前我看到的都是只監聽其中一個

中華電信的路由器 NAT 可以自行設定外部連接埠可以對應內部哪個連接埠,不會永遠都是 80,所以 NAT 另外設定的兩個內部連接埠 3000 跟 10032 才能連進架在 wsl2 的網站
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答