Ich habe einen Debian Stretch VPS mit 4 IPv4-Adressen. Ich möchte mehrere Programme ausführen und sie an bestimmte IP-Adressen binden (um ausgehende HTTP-Anfragen von verschiedenen IPs zu stellen). So zum Beispiel der Befehl
~$ curl icanhazip.com
würde bestimmte unterschiedliche IPs ausgeben.
Was ich getan habe:
0) Habe bei meinem ISP zusätzliche IPs bestellt
1) /etc/network/interfaces bearbeitet und zusätzliche IPs hinzugefügt:
# Initial configuration after ordering VPS
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
allow-hotplug ens3
iface ens3 inet static
address 194.67.205.100
netmask 255.255.252.0
gateway 194.67.204.1
# Next lines were added by me
auto ens3:1
iface ens3:1 inet static
address 185.125.216.101
netmask 255.255.252.0
auto ens3:2
iface ens3:2 inet static
address 185.125.216.102
netmask 255.255.252.0
auto ens3:3
iface ens3:3 inet static
address 185.125.216.103
netmask 255.255.252.0
2) Dann habe ich Netns für jede IP erstellt
ip netns add ns1
ip netns add ns2
and so on
3) Versucht, eine Schnittstelle zu neu erstellten Netns hinzuzufügen:
# ip link set ens3:1 netns ns1
4) In diesem Moment bricht die SSH-Verbindung ab. Wenn ich mich über VNC anmelde und ausführe ip a
, sehe ich, dass die gesamte physische Schnittstelle ens3 und alle ihre Subschnittstellen aus den Hauptnetzen verschwunden sind.
Screenshot der Befehlsausgabe
Was mache ich falsch? Wie kann ich Programme an verschiedene Quell-IP-Adressen binden?
PS: Ich entwickle einen einfachen Site Scraper mit Python und brauche verschiedene IPs, um das Parsen zu beschleunigen (mehr Anfragen pro Sekunde zu stellen) und eine Sperre zu vermeiden.
Antwort1
Eine bestimmte physische Schnittstelle kann sich nur in einem Netzwerk-Namespace befinden, daher kann sich jeder Ihrer Aliase nicht in seinen eigenen Namespaces befinden. Sobald Sie anfangen, einen zu verschieben, wird sich alles verschieben, was Ihre Beobachtung erklärt.
Siehe diese Frage:Sekundäre IP im eigenen NetNS-Namespacesowohl für Erklärungen, warum das so ist, als auch für eine darauf basierende Lösung macvlan
(oder Sie können andernfalls Brücken, IP-Weiterleitung oder NAT verwenden).