Firewall

儘管埠 80 和 443 已打開,但無法從外部網路訪問網站

  • April 29, 2021

我在我的電腦上託管了一個 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只會在:::80IPv6 或雙堆棧的情況下指示它是 IPv4。

如果您瀏覽到http://[::1]:80(IPv6 環回)您指出它在本地網路上工作但您沒有聲明您使用 IPv6 ip 地址會發生什麼。

引用自:https://serverfault.com/questions/1061630