Dispositivo de loopback não configurado na inicialização

Dispositivo de loopback não configurado na inicialização

Meu conhecimento de interfaces de rede no Linux é, na melhor das hipóteses, limitado, então esperava que alguém pudesse me ajudar a descobrir a melhor solução para um problema que causei inadvertidamente.

Após a inicialização, o dispositivo de loopback na minha estação de trabalho parece não existir. Coisas que exigem o endereço de loopback (como executar conjuntos de testes JUnit no Eclipse) não funcionam corretamente. No entanto, costumava funcionar bem até recentemente, não muito depois de eu estar mexendo no iptables para encaminhar a porta 80 para a porta 8080, então provavelmente é algo que fiz, mas não tenho ideia de como consertar, e até agora, todas as pesquisas no Google não encontraram nenhuma indicação (provavelmente não conheço os termos de pesquisa corretos ...)

Em primeiro lugar, o conteúdo de /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
pre-up iptables-restore /etc/iptables.conf
post-down /etc/iptables-flush-all

Agora, depois de inicializar minha máquina:

$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:24:e8:25:90:5d  
          inet addr:10.33.1.106  Bcast:10.33.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:e8ff:fe25:905d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:500239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:334565 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:617321176 (588.7 MiB)  TX bytes:36019254 (34.3 MiB)
          Interrupt:26 Base address:0x8000 

Se eu executar ifconfig lo 127.0.0.1, tudo estará bem e a saída será ifconfigalterada para:

$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:24:e8:25:90:5d  
          inet addr:10.33.1.106  Bcast:10.33.1.255  Mask:255.255.255.0
          inet6 addr: fe80::224:e8ff:fe25:905d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:606221 errors:0 dropped:0 overruns:0 frame:0
          TX packets:407173 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:767892736 (732.3 MiB)  TX bytes:42051623 (40.1 MiB)
          Interrupt:26 Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:35668 (34.8 KiB)  TX bytes:35668 (34.8 KiB)

Então, alguém pode me ajudar a descobrir o que fiz para quebrar meu endereço de loopback?

Editar 0: Conteúdo de /etc/iptables.conf:

chris@PC:~$ sudo cat /etc/iptables.conf 
# Generated by iptables-save v1.4.8 on Thu Nov 10 17:01:44 2011
*nat
:PREROUTING ACCEPT [2:440]
:POSTROUTING ACCEPT [2:102]
:OUTPUT ACCEPT [1:58]
-A PREROUTING -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination :8080 
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
COMMIT
# Completed on Thu Nov 10 17:01:44 2011
# Generated by iptables-save v1.4.8 on Thu Nov 10 17:01:44 2011
*mangle
:PREROUTING ACCEPT [4787:2521834]
:INPUT ACCEPT [4544:2507689]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4190:913164]
:POSTROUTING ACCEPT [4117:908160]
COMMIT
# Completed on Thu Nov 10 17:01:44 2011
# Generated by iptables-save v1.4.8 on Thu Nov 10 17:01:44 2011
*filter
:INPUT ACCEPT [2699:1514101]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2525:612477]
COMMIT
# Completed on Thu Nov 10 17:01:44 2011

cris@PC:~$sudo iptables -L -t filter

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

cris@PC:~$sudo iptables -L -t mangle

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

cris@PC:~$sudo iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

Editar 1: Comentar as linhas de pré-up e post-down eth0em meu /etc/network/interfacesparece eliminar o problema.

Meu endereço de loopback foi configurado corretamente durante a inicialização após mudar /etc/network/interfacespara isto:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#pre-up iptables-restore /etc/iptables.conf
#post-down /etc/iptables-flush-all

Estas 2 linhas têm como objetivo carregar e descarregar as regras do iptables quando a interface está habilitada e desabilitada. Eu li que esta é a melhor maneira de configurar o firewall no Debian do que carregar todas as regras na inicialização.

O conteúdo de /etc/iptables-flush-allé:

cris@PC:~$sudo cat /etc/iptables-flush-all

#!/bin/sh

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables -t filter --flush

Responder1

Funciona sem que seu firewall esteja carregado?

Aliás, "ifconfig" está obsoleto; é melhor usar "ip" para tudo, inclusive diagnósticos. Não que eu ache que isso esteja relacionado ao seu problema.

Responder2

No meu caso, foi uma questão de configuração adequada do /etc/hosts.

Obtenha seu nome de host com o comandonome de anfitriãoe configure o /etc/hosts desta forma:

127.0.0.1 host local
127.0.1.1 NOME DO HOST

Responder3

No meu caso foihttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739251 ... Eu tenho o iptables-restore no pré-up e inclui -A INPUT -i ! lo -d 127.0.0.0/8 -j rejeitar que agora é uma sintaxe obsoleta ...

Então, se você tiver uma linha como

pré-up iptables-restore /etc/iptables.up.rules

em /etc/network/interfaces, verifique se as regras estão corretas.

No caso específico do bug 739251, substitua

-A ENTRADA -eu ! lo -d 127.0.0.0/8 -j rejeitar

com

-UMA ENTRADA! -i lo -d 127.0.0.0/8 -j rejeitar

informação relacionada