dedlfix: PHP feste Netzwerkkarte zuweisen ( Windows )

Beitrag lesen

Tach!

Kann ich in PHP festlegen welche Netzwerkkarte genutzt wird?

ohne auf implementierungsspezifische Details einzugehen: Definitiv nein.

Definitiv: nicht nein.

PHP ist auf Anwendungsebene angesiedelt. Eine Anwendung instruiert das Betriebssystem, eine Verbindung zu einer bestimmten Netzwerkressource aufzubauen. Es ist Aufgabe des TCP/IP-Protokollstacks, anhand der gewünschten Zieladresse und der Routingtabelle zu entscheiden, über welches Netzwerkinterface die Verbindung hergestellt wird, falls es mehrere gibt.

Wann immer ich mit Low-Level-Netzwerkfunktionen gearbeitet habe, konnte man es sich aussuchen, an welche IP-Adresse und welchen Port man sich binden möchte. Für Serverfunktionalität ist das ein Muss, aber um eine solche geht es in dem Fall nicht. Aber auch der Client kann es sich raussuchen, welche IP-Adresse und welchen Port er als Absender nehmen möchte.

PHPs Curl kennt die Option CURLOPT_INTERFACE: "The name of the outgoing network interface to use. This can be an interface name, an IP address or a host name." Dazu ein User-Kommentar: "Please note that the CURLOPT_INTERFACE setting only accepts IP addresses and hostnames of the local machine." Auch wird das Betriebssystem sich weigern, einen der privilegierten Ports (unterhalb 1024) zu akzeptieren, wenn man keine ausreichenden Rechte vorweisen kann.

file_get_contents() kann man einen Context mitgeben, der Socket context options enthalten kann. Für diesen Fall ist bindto die gesuchte Option.

Genau da, also in der Routingtabelle, musst du also ansetzen. PHP hat selbst keine Möglichkeit, auf die Entscheidung einzuwirken.

Das ist erst ein späterer Schritt. Das Routing kann man als Client nun wirklich nicht mehr beeinflussen.

dedlfix.