Мои знания о сетевых интерфейсах в Linux в лучшем случае ограничены, поэтому я надеялся, что кто-то поможет мне найти лучшее решение проблемы, которую я случайно вызвал.
После загрузки устройство обратной связи на моей рабочей станции не существует. Вещи, для которых требуется адрес обратной связи (например, запуск наборов тестов JUnit в Eclipse), работают неправильно. Однако до недавнего времени все было в порядке, вскоре после того, как я возился с iptables для перенаправления порта 80 на порт 8080, так что, вероятно, это то, что я сделал, но я не знаю, как это исправить, и пока весь поиск в Google не нашел никаких указателей (я, вероятно, не знаю правильных условий поиска ...)
Во-первых, содержание /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
Теперь, после загрузки моей машины:
$ 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
Если я сбегу ifconfig lo 127.0.0.1
, то все в порядке и вывод ifconfig
изменения к:
$ 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)
Итак, может ли кто-нибудь помочь мне выяснить, что я сделал, чтобы сломать свой адрес обратной связи?
Редактировать 0: Содержание /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
Крис @ ПК: ~ $ 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
Крис @ ПК: ~ $ 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
Крис @ ПК: ~ $ 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
Редактировать 1: Комментирование строк до и после завершения для eth0
в моем /etc/network/interfaces
похоже, устраняет проблему.
Мой адрес обратной связи был правильно настроен во время загрузки после изменения /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
Эти 2 строки предназначены для загрузки и выгрузки правил iptables, когда интерфейс включен и отключен. Я читал, что это лучший способ настройки брандмауэра в Debian, чем загрузка всех правил во время загрузки.
Содержание /etc/iptables-flush-all
является:
Крис @ ПК: ~ $ sudo cat /etc/iptables-flush-all
#!/bin/sh
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables -t filter --flush
В моем случае речь шла о правильной настройке / etc / hosts.
Получите свое имя хоста с помощью команды имя хоста и установите / etc / hosts следующим образом:
127.0.0.1 localhost 127.0.1.1 HOSTNAME
Работает ли он без загрузки брандмауэра?
Кстати, ifconfig устарел; лучше всего использовать "ip" для всего, включая диагностику. Не то чтобы я думаю, что это вообще связано с вашей проблемой.
В моем случае это было https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739251 ... У меня есть iptables-restore в предустановке lo, и он включает -A INPUT -i! lo -d 127.0.0.0/8 -j reject, который теперь является устаревшим синтаксисом ...
Итак, если у вас есть строка вроде
предварительная установка iptables-restore /etc/iptables.up.rules
в / etc / network / interfaces проверьте, что правила в порядке.
В конкретном случае ошибки 739251 замените
-A INPUT -i! lo -d 127.0.0.0/8 -j отклонить
с участием
-ВХОД! -i lo -d 127.0.0.0/8 -j отклонить