Minecraft-Java-Edition

我是否需要在防火牆中打開埠才能在 Minecraft 上查看 LAN 遊戲?如果是這樣,是哪個?

  • January 1, 2014

最近我在玩 Minecraft LAN 遊戲時遇到了一些麻煩。不是託管他們,甚至不是完全加入他們,而是完全看到他們。情況如下:

  • 我無法在多人遊戲螢幕上自動看到 Minecraft LAN 遊戲
  • 如果我像在網際網路上的伺服器一樣添加它們,我可以看到它們
  • 如果我添加它們,或者如果我直接連接到它們,我可以加入它們

基本上,我可以加入遊戲,但不能自動找到它們。它只是無限期地顯示“正在掃描本地網路上的遊戲……”。我目前的理論是,雖然加入遊戲顯然不需要打開埠來發現它們可能 - 是這樣嗎?

據我所知,我不能允許特定的應用程序通過我的防火牆(我在 Linux 上,而且無論如何我都不想給 Java 一個全面的許可)所以我不能在沒有的情況下測試它關於需要哪些埠的一些想法。不過,這也有可能是與 Linux 或其他完全相關的另一個問題。

這不是什麼大不了的事,因為我可以問伺服器託管在哪個埠上,但它一直困擾著我。哦,如果有人遇到類似問題的這個問題,我只想重申:

您可以通過直接連接來加入遊戲,只需詢問埠即可。託管人在打開遊戲時會收到一條消息。然後你可以直接連接到它(可能)192.168.#.###:####。

更新:在區域網路上託管工作正常,我只是看不到其他人託管的遊戲。另外,我應該澄清一下,我實際上是指在本地防火牆上打開埠,我說的是埠轉發,但這實際上並不是我的意思。

為了進一步澄清,這並不是一個人孤立的——我和我的兩個兄弟都試過了,他們都沒有使用我知道的任何特殊安全軟體。他們可以看到彼此。

較新的 Fedora 版本(Fedora 18 及更高版本)使用 Firewalld 來管理 iptables 規則。載入規則的 iptables 服務/etc/sysconfig/iptables預設不存在。我的一堆答案涉及手動抨擊 iptables 規則。這對我來說是一個新的領域,因為到目前為止,我對 firewalld 的主要體驗一直是從保存文件中直接回到傳統的 iptables 規則讀取。iptables大多數防火牆資訊是根據其實施的規則動態收集的。

我在我一直在擺弄的 Fedora 20 虛擬機上仔細檢查了這一點。當在 中設置規則時firewall-config,新連接的數據包必須經過以下步驟才能被接受。

  1. 新數據包命中 INPUT 鏈。自動接受現有連接中的數據包。
  2. 所有來自外部的預期連接都被發送到 INPUT_ZONES_SOURCE 鍊或 INPUT_ZONES 鏈,這取決於它們是基於源 IP 還是數據包進入的介面被挑選出來的。除了 IP/介面註釋之外,每個內部的邏輯幾乎相同。在我的範例中,我將重點關注 INPUT_ZONES_SOURCE。
  3. 我將我的 Minecraft 規則添加到“home”區域,因此我在home -> sources中添加了一個條目,說明來自網路地址 10.20.30.0/24 的數據包來自 home。在 INPUT_ZONES_SOURCE 中,有一條規則將來自該 IP 範圍的所有數據包發送到 IN_home 鏈。
  4. 在 IN_home 鏈中,我有三個專用於特定任務的鏈:IN_home_log、IN_home_deny(這是空的,因為我沒有設置任何東西)和 IN_home_allow。
  5. IN_home_allow 保存了“home”區域的所有允許服務,包括我剛剛輸入的 25565 規則。雖然我沒有啟動 Minecraft 伺服器或將任何其他東西綁定到 TCP/25565,但我可以看到其他一些預設規則確實記錄了數據包被接受,因此正在根據該規則評估流量。
  6. 任何不被接受的規則最終都會與 INPUT 鏈的最後一條規則發生衝突。最終規則將拒絕任何仍在鏈上的數據包。

為了達到我的解釋目的,我能否確認您已為允許埠進入的區域設置了輸入介面或 IP 地址/範圍?您已經放置了一條規則以允許給定區域中的埠,但聽起來數據包似乎無法達到該規則並被接受。

您可以使用 列出表格iptables -nvL。Firewalld 設置了很多鏈,因此如果您想特別查看其中的一個,請將鏈名稱添加為參數:iptables -nvL <chain-name>. 如果您可以在左側列中看到大於零的數字,這意味著數據包已到達並觸發了規則。(規則採取的行動在第三列)。

要強制您的防火牆接受所有內容,並查看是否有某些事情讓您感到痛苦,您可以暫時完全停止 firewalld 服務。

systemctl stop firewalld

您可以交替使用 刷新表iptables -F,但我不確定 firewalld 何時/是否會在不更改規則以提示它這樣做的情況下自行重新填充鏈。

希望這能解決您的問題。但是,如果您想要/需要iptables通過讓防火牆從 /etc/sysconfig/iptables 中載入其規則來進入自定義佈局,您將需要安裝並啟用該服務,以及禁用 firewalld。

  1. 安裝 iptables 服務:yum install iptables-services
  2. 停止防火牆:systemctl stop firewalld
  3. 禁用防火牆:systemctl disable firewalld
  4. 啟動 iptables 服務(如果此時您沒有 /etc/sysconfig/iptables,這不會做任何事情):systemctl start iptables
  5. 啟用 iptables 服務:systemctl enable iptables

不,您不需要轉發埠以在 LAN 上播放。埠轉發僅適用於通過路由器離開/進入的連接,即。網路遊戲託管。它是網路地址轉換(簡稱 NAT)的一部分。在不涉及太多技術細節的情況下,基本上這是路由器隱藏/保護您的電腦免於暴露在公共網際網路上的一種聰明方法。因此,為了允許公共網際網路電腦與您的電腦通信,您必須“暴露”路由器允許與您的電腦通信的某些埠。本地網路 LAN 中發生的任何事情都不需要到公共網際網路,因此不涉及 NAT,因此不需要埠轉發。

現在,可能還有其他事情在起作用,例如如果您或您的好友在您的電腦上安裝了任何 3rd 方防火牆軟體,它可能會阻止遊戲。如果是這樣,請暫時禁用它,或者告訴它允許您的遊戲建立連接。對於內置於 Vista 及更高版本的普通 Windows 防火牆,它通常會在您第一次執行它時詢問您是否要允許該程序與網路 (LAN) 通信。

引用自:https://gaming.stackexchange.com/questions/148045