簡體   English   中英

jupyter notebook 的 iptables 規則

[英]iptables rules for jupyter notebook

jupyter notebook 的 iptables 設置有問題。 使用以下規則(假設筆記本端口為 8888),jupyter 筆記本服務器將成功啟動,但實際筆記本內核將無法啟動/建立。

通過注釋掉最后的 iptables 規則“-A OUTPUT -j DROP”,一切正常。

有什么想法嗎?

-A INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 8888 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED --sport 8888 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED --sport 8888 -j ACCEPT 
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 8888 -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -j DROP

通常像 jupyter 這樣的工具使用環回設備 (localhost) 來訪問某些功能。 例如,jupyter 有一個前端,它通過 HTTP 與筆記本服務器通信,它通過套接字將消息發送到 IPython 內核(請參閱: https : //jupyter.readthedocs.io/en/latest/architecture/how_jupyter_ipython_work.html )。

我會添加以下規則:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

這些規則允許與回送設備 (localhost) 之間的輸入和輸出。

上面的答案是正確的修復但是指向的文檔已損壞,有關 Jupyter 客戶端與 IPython 內核通信的當前文檔在此處更新: https ://jupyter-client.readthedocs.io/en/latest/messaging.html

此外,這是為任何有此問題的人添加 iptable 規則的正確順序:

iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 8888 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED --sport 8888 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED --sport 8888 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 8888 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP

iptable 規則以鏈的形式存在。 傳入、傳出和傳遞數據包在相應鏈中一次檢查一個規則,並根據匹配的第一個規則進行處理。 按照上述順序,具有回送地址的數據包可以自由通過,但所有其他流量都被阻止。 這會阻止 pip 安裝、apt-updates、telnet、netcat 等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM