mehrere gleichzeitig ausgehende IPs

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 31. Aug 2017, 20:15

Hallo, ich möchte auf einem Server mehrere IPs nutzen. Diese sind bereits eingerichtet und ich kann auch die ausgehende IP wechseln. Allerdings kann ich immer nur eine IP zur selben Zeit benutzen. Ich würde gerne für verschiedene Programme, verschiedene IPs nutzen. Gibt es da eine Lösung für. Virtuelle Maschinen kommen dafür aber nicht in Frage.

Hoffe auf hilfreiche Tipps

Werbung:
Gräfin Klara
Hacker
Hacker
Beiträge: 255
Registriert: 23. Jun 2008, 20:51

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von Gräfin Klara » 31. Aug 2017, 21:23

kruppa hat geschrieben:
31. Aug 2017, 20:15
...Allerdings kann ich immer nur eine IP zur selben Zeit benutzen....
Auf welchem device .. oder welchem process .. oder virtuellem device??? Deine Infos sind viel zu dürftig für eine Antwort
Warum willst du das tun? Keine Angst, ich fürchte mich vor gar nichts.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 31. Aug 2017, 21:35

ich poste einfach mal die gekürzte Ausgabe von ifconfig:

Code: Alles auswählen

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.4  netmask 255.255.255.255  broadcast *.*.*.4

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.75  netmask 255.255.255.255  broadcast *.*.*.75
        
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.45  netmask 255.255.255.255  broadcast *.*.*.45

eth0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.90  netmask 255.255.255.255  broadcast *.*.*.90
       
Zugriff sollen verschiedene PHP Programme haben, die über das Terminal gestartet werden, also ohne Webserver.

Gräfin Klara
Hacker
Hacker
Beiträge: 255
Registriert: 23. Jun 2008, 20:51

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von Gräfin Klara » 31. Aug 2017, 21:48

kruppa hat geschrieben:
31. Aug 2017, 21:35
ich poste einfach mal die gekürzte Ausgabe von ifconfig:

Code: Alles auswählen

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.4  netmask 255.255.255.255  broadcast *.*.*.4

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.75  netmask 255.255.255.255  broadcast *.*.*.75
        
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.45  netmask 255.255.255.255  broadcast *.*.*.45

eth0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *.*.*.90  netmask 255.255.255.255  broadcast *.*.*.90
       
Zugriff sollen verschiedene PHP Programme haben, die über das Terminal gestartet werden, also ohne Webserver.
ok, du hast eine static IP PLUS mehere IP_aliases auf einem ethernet device.
Ich gehe davon aus, dass alle IPs (natürlich unterschiedliche) einer Class angehören??
Warum ist netmask 255.255.255.255, weil nur eine alias IP? So wird aber kein routing funktionieren, auch nicht mit Aliases.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 31. Aug 2017, 22:12

Die IPs gehören nicht zur selben Class. Routing habe ich z.B. mit

Code: Alles auswählen

ip route add default dev eth0 via *.*.96.1 src  *.*.19.45
ändern können.
Zuletzt geändert von gehrke am 31. Aug 2017, 22:23, insgesamt 1-mal geändert.
Grund: Bitte zukünftig <code>-Tags verwenden - https://linux-club.de/forum/viewtopic.php?f=92&t=105750

Gräfin Klara
Hacker
Hacker
Beiträge: 255
Registriert: 23. Jun 2008, 20:51

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von Gräfin Klara » 31. Aug 2017, 22:44

kruppa hat geschrieben:
31. Aug 2017, 22:12
Die IPs gehören nicht zur selben Class. Routing habe ich z.B. mit

Code: Alles auswählen

ip route add default dev eth0 via *.*.96.1 src  *.*.19.45
ändern können.
routing hast du ändern können ... das ist ja wunderbar!
Warum gibst du dann nicht das Resultat von

Code: Alles auswählen

# ip -d route show
preis? Geheim? Keine Lust? Oder meinst du vielleicht, dass diese Kuh gefälligst nachfragen soll.

Ich glaube, du weißt ja gar nicht was du im Grunde willst.
Hier ist Ende mit meiner Unterstützung
Zuletzt geändert von gehrke am 1. Sep 2017, 07:42, insgesamt 1-mal geändert.
Grund: Bitte zukünftig <code>-Tags verwenden - https://linux-club.de/forum/viewtopic.php?f=92&t=105750

spoensche
Moderator
Moderator
Beiträge: 7253
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von spoensche » 1. Sep 2017, 17:45

Das kannst du mittels cgroups durchführen, in dem du den jeweiligen PHP Prozess in eine cgroup packst und der cgroup anschließend noch das jeweilige Interface zuweist.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 1. Sep 2017, 17:51

Der Tipp mit den cgroups hört sich sehr vielversprechen an. Danke. Ich werde es mal probieren

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 5. Sep 2017, 23:37

Wie weise ich denn einer cgroup ein Device zu? Es sind ja nur Alias-Devices. Ich habe mal folgendes gemacht und bekomme einen Fehler:

Code: Alles auswählen

echo "eth0:0 5" > net_prio.ifpriomap
-bash: echo: write error: No such device
Lese ich net_prio.ifpriomap aus kommt nur:

Code: Alles auswählen

cat net_prio.ifpriomap
lo 0
eth0 0
Was kann ich tun?

MH1962
Member
Member
Beiträge: 54
Registriert: 10. Aug 2015, 16:42

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von MH1962 » 6. Sep 2017, 05:34

Es gibt kein generisches Verfahren, einem bestimmten Programm eine bestimmte IP zuzuweisen.

Das Programm muss letztendlich die libc-Funktion bind() mit der gewollten IP aufrufen. Wie man das Programm dazu bringt, ist Sache des Programms.

Z.B. in postfix muss man in der main.cf die Config-Variable inet_interfaces setzen. Und so weiter, in jedem Programm anders. Es geht auch mit ausgehendem Traffic, z.B, bei ssh mit dem Command Line Switch "-b" oder bei ping mit "-I".

Will man es anders haben, braucht man tatsächlich irgendeine Art von Virtualisierung. Auch die bereits angesprochenen cgroups sind ja schon ein Virtualisierungs-Feature.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 6. Sep 2017, 10:28

jetzt wäre es schön zu wissen ob man PHP dazu bringen kann die IP zu wählen.

spoensche
Moderator
Moderator
Beiträge: 7253
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von spoensche » 6. Sep 2017, 19:15

MH1962 hat geschrieben:
6. Sep 2017, 05:34
Auch die bereits angesprochenen cgroups sind ja schon ein Virtualisierungs-Feature.
Die Control Groups sind kein Virtualisierungs-Feature, sonden dienen dazu lokale Prozesse zu isolieren. Dafür erhält der Process einen Namespace und in diesem Namespace können diverse Limitierungen konfiguriert werden. Namespaces gibt es auch fürs Netzwerk und werden mit dem Tool ip konfiguriert.

Diese vorhanden Features für die Isolation werden von LXC, LXD etc. verwendet und erweitert, um die Container Virtualisierung zu ermöglichen.

Unterschiede zwischen Container Virtualisierung und einem Typ 1 Hypervisor sind folgende:

1. Container verwenden den aktuell gebooteten Kernel um Zugriff auf z.B. Netzwerkinterface zu erhalten.
2. D.h, der Overhead ist nahezu 0, weil keine Hardware abgebildet bzw. emuliert werden muss.
3. Container müssen nicht zwangsläufig ein vollständiges System sein. Sie können auch einfach nur eine Anwendung beinhalten. (also so eine Art Sandbox)
kruppa hat geschrieben: jetzt wäre es schön zu wissen ob man PHP dazu bringen kann die IP zu wählen.
Ein Blick in die PHP Doku der Socket Funktionen gibt dir Auskunft darüber, dass dies machbar ist. Dabei ist aber einiges zu beachten.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 7. Sep 2017, 14:26

Ich habe jetzt die Idee die Pakete mit cgroup zu markieren und dann mit iptables entsprechend der IP zuzuweisen. Leider scheint bei folgendem Code irgendein Fehler zu sein:

Code: Alles auswählen

cd /sys/fs/cgroup/net_cls/
mkdir new_route
cd new_route
echo 0x00110011 > net_cls.classid
iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11
echo 11 new_route >> /etc/iproute2/rt_tables
ip rule add fwmark 11 table new_route
ip route add default via *.*.96.1 src *.*.19.90 table new_route
Ein Test mit

Code: Alles auswählen

cgexec -g net_cls:new_route links wieistmeineip.de
liefert nun aber leider eine andere IP als *.*.19.90

Wo liegt jetzt mein Fehler?

Der Befehl:

Code: Alles auswählen

ip route add default via *.*.96.1 src *.*.19.90
funktioniert und bring dann auch die IP *.*.19.90 als Ergebnis, aber dann natürlich für alle Prozesse.

spoensche
Moderator
Moderator
Beiträge: 7253
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von spoensche » 9. Sep 2017, 13:22

Einfacher ist es mit Network Namespaces.

Code: Alles auswählen

ip netns add my_php_app
ip link set dev eth1 netns my_php_app
ip netns exec my_php_app ifconfig eth1 *.*.19.90/24 up
ip netns exec my_php_app ifconfig lo 127.0.0.1/8 up
ip netns exec my_php_app route add default via*.*.96.1
ip netns exec my_php_app sudo -u username php myapp.php

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 11. Sep 2017, 16:34

Leider funktioniert es noch nicht. Ich musste den Code ein wenig anpassen, wegen eth1 und der netmask. Habe nun folgendes und bekomme einen Fehler

Code: Alles auswählen

ip netns add my_php_app
ip link set dev eth0 netns my_php_app
ip netns exec my_php_app ifconfig eth0 *.*.19.90 netmask 255.255.255.255 up
ip netns exec my_php_app ifconfig lo 127.0.0.1/8 up
ip netns exec my_php_app ip route add default via *.*.96.1
RTNETLINK answers: Network is unreachable

Woran liegt das? Meine Vermutung ist das bei dem Befehl:

Code: Alles auswählen

ip link set dev eth0 netns my_php_app
etwas nicht richtig ist. Ich verliere dann auch sofort die ssh Verbindung.

spoensche
Moderator
Moderator
Beiträge: 7253
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von spoensche » 11. Sep 2017, 20:07

Du darfst nicht die IP verwenden über die du dich mit dem Server verbindest. Du musst schon die zweite IP verwenden.

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 11. Sep 2017, 20:13

An der Stelle hab ich ja noch gar keine IP verwendet nur das Device eth0 und ich habe kein anderes. Nur die virtuellen eth0:0 eth0:1 ...

Aber das ist ja nur ein Problem, das eigentliche war ja der Fehler: RTNETLINK answers: Network is unreachable

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 12. Sep 2017, 14:51

Ich habe jetzt einen funktionierenden Namespace hinbekommen. Allerdings nur über die IP von eth0. Wie bekomme ich es denn über die IP von eth0:0, eth0:1, usw. hin.

Code: Alles auswählen

ip netns del kab

ip netns add kab


ip link add veth0 type veth peer name vpeer0

ip link set vpeer0 netns kab

ip addr add 10.0.0.1/24 dev veth0
ip link set veth0 up

ip netns exec kab ip addr add 10.0.0.2/24 dev vpeer0
ip netns exec kab ip link set vpeer0 up
ip netns exec kab ip link set lo up

ip netns exec kab ip route add default via 10.0.0.1

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o veth0 -j ACCEPT
iptables -A FORWARD -o eth0 -i veth0 -j ACCEPT

spoensche
Moderator
Moderator
Beiträge: 7253
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von spoensche » 12. Sep 2017, 17:12

Ist doch gar nicht so schwer. Stat eth0:0 etc. legst du stattdessen veths an, weisst diese dem Namespace zu und gibst ihnen in dem Namespace die IP, die vorher eth0:0 etc. hatte.

Die IP-Tables Regeln fürs Forwarding sind hoffentlich nicht dein Ernst oder? (Scheunentor so weit offen, wie Windows)

kruppa
Newbie
Newbie
Beiträge: 36
Registriert: 5. Jan 2006, 17:57

Re: mehrere gleichzeitig ausgehende IPs

Beitrag von kruppa » 12. Sep 2017, 17:50

scheinbar zu schwer für mich, welche IP soll ich denn veth0 und welche vpeer0 zuweisen?

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste