Linux netns: verschiedene Befehle mit unterschiedlichen IPs auf einer physischen Schnittstelle ausführen

Linux netns: verschiedene Befehle mit unterschiedlichen IPs auf einer physischen Schnittstelle ausführen

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).

verwandte Informationen