[英]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.