儘管埠 80 和 443 已打開,但無法從外部網路訪問網站
我在我的電腦上託管了一個 Express 伺服器,主要是為了開發,也為了和我的朋友一起玩。
幾天前,我的 ISP 將我使用了大約 3 年的靜態 IPv4 地址更改為動態 IPv6 地址。
v6 不建議更改 IP 的格式,但不止於此。如果路由器的防火牆和本地電腦的防火牆允許,每個連接到本地網路的設備都可以從外部訪問。在 v6 中,埠轉發和 NAT 不再存在。我就是這麼理解的。
考慮到這一點,我將路由器配置為允許來自任何源 IP、任何目標 IP、任何源埠以及 TCP 上的目標埠 80 和 443。
我還在 Windows 防火牆中添加了一條規則,以允許埠 80 和 443 上的入站數據。
該網路伺服器只能從本地網路正常工作,因為我無法從外部訪問它。
我嘗試了幾件事:
- 完全禁用 Windows 防火牆
- 在我的樹莓派上嘗試一切;我已經為 v4 和 v6 配置了 UFW 規則,我什至禁用了它以確保它不會阻止數據包。
- 用這個站點查看80和443是否開放,它們是
- 將 MTU 大小從 1500 更改為 1492
埠是打開的,但我仍然收到地址無法訪問的錯誤,這真的讓我很困擾。這怎麼可能?
當我使用 v4 時,我沒有遇到任何問題。我想我錯過了關於 v6 工作原理的一些東西。
IPv6 和 IPv4 不兼容,因為我只有 IPv6,任何擁有 IPv4 的人都無法訪問我的網站。
當一些線上服務告訴我我的網站正在執行(請求顯示在日誌中)而其他人說它沒有執行時,我想通了;因為有些支持 v6 而有些不支持。
此外,錯誤是 DNS_PROBE_FINISHED_NXDOMAIN。如果我更加註意它,我會注意到它未能檢索到有效的 IP,因為唯一的 DNS 記錄是 AAAA 並且具有 IPv4 的客戶端沒有 A 記錄可檢索。
最後,我將購買一個非常便宜的具有 IPv4 和 IPv6 的 VPS,並將其用作反向代理,將 IPv4 數據包轉換為 IPv6。
IPv6 地址是相當“靜態”的,因為它們通常是第一部分的網路部分,中間的一點通常不會改變,最後一部分是你的 mac 地址。
第一步是檢查你的路由器,它是否有防火牆(IPv6),是否過濾入站數據包
話雖這麼說,你不要太詳細。您是否嘗試過
netstat
我在 linux 上通常添加-ntl
(-n 不解析 IP,-t 僅用於 tcp,-l 僅用於偵聽)我確信會有一個 Windows 等效項。您的網路伺服器是在偵聽 IPv6 還是僅偵聽 IPv4?通常0.0.0.0:80
只會在:::80
IPv6 或雙堆棧的情況下指示它是 IPv4。如果您瀏覽到
http://[::1]:80
(IPv6 環回)您指出它在本地網路上工作但您沒有聲明您使用 IPv6 ip 地址會發生什麼。