连接到本地主机服务器会产生非本地主机客户端地址

连接到本地主机服务器会产生非本地主机客户端地址

我有一台笔记本电脑,其网络设置有些奇怪:为了能够将来自我的虚拟机和容器的任何互联网访问转发到我的笔记本电脑碰巧拥有的任何默认路由(可能是wlan0eth0ppp0),我设置了通常的sysctl net.ipv4.ip_forward=1和我的以下内容/etc/network/interfaces

auto lxcbr0

iface lxcbr0 inet static
        address 192.168.56.1
        netmask 255.255.255.0
        bridge_ports none
        bridge_fd 0
        bridge_maxwait 0
        # XXX: no --out-interface
        up iptables -t nat -A POSTROUTING -j MASQUERADE
        down iptables -t nat -D POSTROUTING -j MASQUERADE

我使用 NetworkManager 来获取 Internet 连接。到目前为止,这一切正常,直到我尝试启动fossil ui,结果发现127.0.0.1在此设置中连接会导致客户端地址来自不同的子网。

例如,以下 Perl 脚本:

#!/usr/bin/perl
use 5.020;
use IO::Socket::INET;
say IO::Socket::INET::->new(
        Proto=>"tcp", Listen=>0,
        LocalAddr=>"127.0.0.1:8080",
        ReuseAddr=>1, ReusePort=>1,
)->accept->peerhost;

127.0.0.1如果我用来连接它,通常会打印nc 127.0.0.1 8080(并且在我的其他机器上也是如此),但在这台笔记本电脑上它会打印(这确实是我当前默认路由所在192.168.1.11的地址)。wlan0

我尝试添加一条特殊的路线到127.0.0.0/8via lo,但它没有改变任何东西。

如何使本地主机连接的行为就像它们实际上来自本地主机一样?

答案1

将 NAT 防火墙规则添加! --out-interface lo到了这一点:现在lo访问受通常的法律管辖,并且不会受到任何伪装(因为它不应该受到伪装)。

相关内容