Ist es möglich, eine echte IP auf ein Loopback-Gerät zu setzen?

9

Ist es möglich, einem Loopback-Gerät eine echte IP-Adresse (nicht im Bereich 127.xxx) zuzuweisen?

Peter Smit
quelle
Ja, sicher.
Ipor Sircer
3
... eine Gefahr besteht natürlich darin, dass Sie vergessen, dass diese IP vorhanden ist, und dann haben Sie Probleme mit dem Netzwerk, da die Pakete nicht an die erwartete öffentliche IP-Adresse
gesendet werden

Antworten:

5

Nichts verbietet es.

# ifconfig lo: 1 10.0.0.1/8 
# ifconfig lo: 1
lo: 1 Link encap: Lokaler Loopback  
          inet addr: 10.0.0.1 Maske: 255.0.0.0
          UP LOOPBACK RUNNING MTU: 65536 Metrisch: 1
# ping -c 1 10.0.0.1    
PING 10.0.0.1 (10.0.0.1) 56 (84) Datenbytes.
64 Bytes ab 10.0.0.1: icmp_seq = 1 ttl = 64 Zeit = 0,025 ms

--- 10.0.0.1 Ping-Statistiken ---
1 gesendete Pakete, 1 empfangene, 0% Paketverlust, Zeit 0 ms
rtt min / avg / max / mdev = 0,025 / 0,025 / 0,025 / 0,000 ms

Aktualisieren:

Damit diese Adresse nach einem Neustart unter Ubuntu 16.04 bestehen bleibt, können Sie Ihre /etc/network/interfacesDatei mit den folgenden ethtoolBefehlen ändern :

auto lo lo:1

iface lo inet loopback

iface lo:1 inet static
  address 10.0.0.1
  network 10.0.0.0
  netmask 255.0.0.0
jlliagre
quelle
Bleibt dies nach einem Neustart bestehen?
Peter Smit
1
Nein. Geben Sie besser das genaue Betriebssystem / die Verteilung an, die Sie verwenden, um eine zuverlässige Antwort zu erhalten, und stellen Sie möglicherweise eine neue Frage oder prüfen Sie, ob diese noch nicht beantwortet wurde.
Jlliagre
Ubuntu 16.04 LTS
Peter Smit
Antwort aktualisiert.
Jlliagre
5

Alternativ zur Verwendung lo:0können Sie auch dummySchnittstellen unter Linux wie folgt verwenden:

ifconfig dummy0 10.0.0.1/32
ifconfig dummy1 10.1.1.1/24

Neben anderen Antworten:

  • Ich empfehle nicht, die übliche / offizielle Loopback-Schnittstellenadresse zu ändern, da viele Funktionen davon abhängen.
  • Sie können jedoch mehrere Loopback / Dummy-Schnittstellen haben / erstellen - entweder lo: 0 bis lo: 255 oder DummyX-Schnittstellen;
  • es muss berücksichtigt werden, dass lo: 0 bis lo: 255 Aliase sind, während dummyX vollständige Schnittstellen sind;
  • Darüber hinaus besteht eine der in Linux üblichen Taktiken zum Erstellen virtueller IPs über BGP oder OSPF darin, sie Loopback- / Dummy-Schnittstellen zuzuweisen UND über Routing Pfade zu ihnen zu erstellen.
  • Wiederum haben einige Daemons Probleme mit der Ansage von Adressen in Aliasnamen (z. B. Quagga). In diesen Fällen werden daher DummyX-Schnittstellen empfohlen.
  • Ich möchte betonen, dass solche Adressen ohne Routing in der Infrastruktur nur auf dem betreffenden Server bekannt sind / verwendet werden können.
  • Das Zuweisen einer privaten / öffentlichen Adresse zu einer Loopback-Schnittstelle ohne das richtige Routing kann eine Maßnahme mit geringen Rechenkosten sein, um die Kommunikation mit einer IP-Adresse / einem IP-Netzwerk vorübergehend auf die schwarze Liste zu setzen .

Weitere Informationen finden Sie beispielsweise in einem BIND Anycast-Setup-Tutorial, das mit Quagga / BIRD erstellt wurde.

Routing-Hinweise hier: OSPF: Migration von Quagga zu BIRD

PS Linux erstellt standardmäßig nur Dummy0 und Dummy1 und muss angewiesen werden, eine größere Anzahl von Dummy-Schnittstellen zu erstellen.

Rui F Ribeiro
quelle
1
Ich werde dies unbedingt mit (statischem) Routing verwenden. Gibt es einen wirklichen Unterschied zwischen Dummy- und Loopback-Schnittstellen?
Peter Smit
@PeterSmit weist dem Loopback vips zu, um sich mit Aliasnamen einer Schnittstelle zu befassen, während Dummy eigenständige vollständige Schnittstellen sind. Es gab Probleme bei der Verwendung von Schnittstellen-Aliasen mit Quagga ... und ich empfehle nicht, lo zu ändern. Es kommt auch häufig vor, dass Sie fw-Regeln mit einer tatsächlichen Schnittstelle und nicht mit einem Alias ​​verknüpfen können / müssen.
Rui F Ribeiro
3

Auf dem aktuellen Linux-Kernel mit dem ipDienstprogramm ist es ganz einfach:

ip addr add 10.0.1.8 dev lo

Dies kann nützlich sein, wenn Sie einen Dienst haben, der einen Port an einer Schnittstelle bindet, und ein anderes Programm auf demselben Port und Netzwerk ausführen möchten. Ich benutze es, um beide zu aktivieren bindund dnsmasqauf demselben Server nebeneinander zu existieren.

Wenn Sie /etc/network/interfacesIhre Schnittstellen konfigurieren, aktualisieren Sie die loZeilengruppe so, dass sie Folgendes enthält:

up ip addr add 10.0.1.8 dev lo
BillThor
quelle
Vielen Dank. Wird dies weiterhin ein Neustart sein?
Peter Smit
1
@ PeterSmit Unwahrscheinlich.
Kusalananda
1

Ja, aber das heißt nicht, dass es eine gute Idee ist. Wenn Sie eine IP verwenden, auf die Ihr System jemals zugreifen wird, werden alle Daten, die es dort zu senden versucht, stattdessen an das lokale System umgeleitet, was zu allen möglichen Netzwerkproblemen führen kann. Dies bedeutet insbesondere, dass Sie nichts außerhalb der folgenden Bereiche sicher verwenden können:

127.0.0.0/8
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4

Mit der möglichen Ausnahme einer der folgenden Faktoren hängt davon ab, wie Ihre anderen Netzwerkschnittstellen konfiguriert sind:

10.0.0.0/8
192.168.0.0/16
172.16.0.0/12
169.254.0.0/16

Dies ist ein Fall, in dem RFC 1925 , Abschnitt 2, Punkt 3 gilt.

Austin Hemmelgarn
quelle
Eigentlich gibt es mehr Bereiche. In meinem Fall wäre es im Bereich 100.64.0.0/10 (Carrier Grade NAT)
Peter Smit
1
Es mag mehr geben, aber die meisten von ihnen werden auf Client-Systemen nicht häufig verwendet (ich denke, der CGN-Bereich passt wahrscheinlich dazu), oder sie haben schlecht definierte Verwendungen, die viele Menschen möglicherweise nicht verstehen (wie 198.18.0.0/15, für die sie verwendet werden) Benchmarking), und ich wollte vermeiden, zu sagen, dass etwas, das möglicherweise nicht einigermaßen sicher ist, tatsächlich sicher ist.
Austin Hemmelgarn