Adicionar o ! --out-interface lo à regra de firewall NAT resolveu o problema: agora lo access é regido pelas leis usuais e não está sujeito a nenhum mascaramento (como não deveria).
Eu tenho um laptop com uma configuração de rede um pouco estranha: para poder encaminhar qualquer acesso à Internet de minhas VMs e contêineres para qualquer rota padrão que meu laptop tenha (que poderia ser wlan0 , eth0 ou ppp0 ), defini o usual sysctl net.ipv4.ip_forward=1 e o seguinte em /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
Eu uso o NetworkManager para obter minha conexão com a Internet. Até agora, isso funcionou normalmente, até que eu tentei executar fossil ui e a conexão com 127.0.0.1 nesta configuração resulta no endereço do cliente sendo de uma sub-rede diferente.
Por exemplo, o seguinte script 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;
normalmente imprime 127.0.0.1 se eu usar nc 127.0.0.1 8080 para se conectar a ele (e isso acontece em minhas outras máquinas), mas neste laptop ele imprime 192.168.1.11 (que é de fato o endereço de wlan0 minha rota padrão atual reside).
Eu tentei adicionar uma rota especial a 127.0.0.0/8 via lo , mas isso não mudou nada.
Como faço para que conexões de host local se comportem como se fossem realmente de localhost?
Adicionar o ! --out-interface lo à regra de firewall NAT resolveu o problema: agora lo access é regido pelas leis usuais e não está sujeito a nenhum mascaramento (como não deveria).
Tags networking