Python3 IDLE 与 "Invalid host" 一起消亡



IDLE不会在我的计算机上启动。它立即死亡,引发OSError并打印以下崩溃信息:

** Invalid host:  ('192.168.2.254', 47392)
Traceback (most recent call last):
File "/bin/idle", line 5, in <module>
main()
File "/usr/lib/python3.8/idlelib/pyshell.py", line 1516, in main
shell = flist.open_shell()
File "/usr/lib/python3.8/idlelib/pyshell.py", line 331, in open_shell
if not self.pyshell.begin():
File "/usr/lib/python3.8/idlelib/pyshell.py", line 1049, in begin
client = self.interp.start_subprocess()
File "/usr/lib/python3.8/idlelib/pyshell.py", line 465, in start_subprocess
self.rpcclt.accept()
File "/usr/lib/python3.8/idlelib/rpc.py", line 544, in accept
raise OSError
OSError

碰巧,显示的地址是我的子网接口。查看File "/usr/lib/python3.8/idlelib/rpc.py", line 544, in accept内部,我发现它只接受来自LOCALHOST的连接。我的问题是,如果不从localhost连接是一个问题,那么它为什么选择从该接口连接到自己,我该如何纠正?

这是一个伪装问题。在这种情况下,有一个防火墙规则如下:

iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

这导致127.0.0.1的连接伪装成192.168.2.254。该规则已被删除,并替换为更具体的转发规则,问题得到了解决。

最新更新