我正在尝试在 iptables 中允许在同一台机器上运行的软件之间的连接。
以下情况会导致我的互联网连接中断:
# The following rules doesn't allow the VPN connection to be established
#-A INPUT -i lo -o lo -j ACCEPT
下面的方法是可行的:
# The following rules work and make RStudio works
-A INPUT -s 127.0.0.1/24 -d 127.0.0.1/24 -j ACCEPT
lo
接口和IP地址有什么区别127.0.0.1
?
答案1
简而言之,Linux 内核在绕过 iptables 的内部路由时会执行一些幕后魔法来加速流量。我相信您可以设置 sysctl 属性route_localnet
并强制流量在本地“路由”,然后它会通过接口而不是仅通过 ip 来命中 iptables 规则。如果这不起作用,请尝试trace
在表中设置raw
并跟踪数据包通过所有链和表的流程。
另外(附注),当使用 127.0.0.0 网络时...掩码实际上应该是 127.0.0.0/8 而不是 /24。我见过一些 Linux 进程在 lo 接口上使用 127.100.0.1 和其他奇怪的地址。