2013-07-07 12 views
8

Wie lege ich eine IP-Adresse für eine TUN-Schnittstelle unter OSX fest? Ich kann nicht herausfinden, wie man eine IP-Adresse für meine Schnittstelle einrichtet, ohne eine Ziel-IP anzugeben. Ich möchte das nicht tun - ich möchte mehr oder weniger zu einem späteren Zeitpunkt einen Tunnel zu einer beliebigen Adresse aufbauen. Vorherige Fragen, die nicht hilfreich sind:Wie lege ich eine IP-Adresse für die TUN-Schnittstelle unter OSX fest (ohne Zieladresse)?

  1. Es gibt a question, die eine unklare Antwort hat, also habe ich versucht, die Referenz zu folgen.
  2. This question legt eine Point-to-Point-IP-Adresse für ein Tun-Gerät, so dass es ein Ziel hat, das ist genau das, was ich nicht will.

Sie auf der Seite für osxtuntap heißt es:

$ sudo ifconfig tun0 10.1.2.3 up 
ifconfig: ioctl (SIOCAIFADDR): Destination address required 

Hinzufügen einer Netzmaske nicht Hilfe- OSX ist:

ifconfig tap0 10.1.2.3 up 

ich diese Arbeit nicht auf OSX 10.6 für eine TUN-Schnittstelle machen kann scheint eine Zieladresse zu fordern:

$ ifconfig tun0 10.0.0.1/24 netmask 255.255.255.0 
ifconfig: ioctl (SIOCAIFADDR): Destination address required 

Für Linux bekomme ich, wie es funktioniert. Nach this page öffnen Sie(), um die Schnittstelle und den IP-Befehl verwenden, und dies tun, und ich habe dies mit Null Ausgaben zuvor getan:

$ ip link set tun0 up 
$ ip addr add 10.0.0.1/24 dev tun0 

Alles, was ich das Gleiche tun will, dass ich kann in Linux tun.


EDIT:

Ich bin ein wenig UDP Tunnel App zu schreiben. Wie so:

tun1 -> udp App # 1 -> udp Tunnel -> udp App # 2 -> tun2

Wenn die udp-Anwendungen auf verschiedenen Computern sind (wir lokale sagen und remote), würde ich Ich mag es, ihre jeweiligen tun-Geräte mit einer IP-Adresse zu verbinden, so dass ich ein Paket von lokal zu remote über den Tunnel senden kann, indem ich das Paket an die IP-Adresse des tun-Geräts auf dem entfernten Rechner sende.

Um mehr von den Linux-Tutorial ausleihen, stellt der Autor eine tut Device auf lokales und Remote-up, ordnet ips, und betreibt einen einfachen Tunnel App und Pings dann das andere Ende des Tunnels:

[remote]# ip link set tun3 up 
[remote]# ip addr add 192.168.0.2/24 dev tun3 
[remote]$ ./simpletun -i tun3 -s 
# server blocks waiting for the client to connect 
[local]# ip link set tun11 up 
[local]# ip addr add 192.168.0.1/24 dev tun11 
[local]$ ./simpletun -i tun11 -c 10.2.3.4 
# nothing happens, but the peers are now connected 
[local]$ ping 192.168.0.2 
+0

Niemand konnte jemals herausfinden, was der andere Mann vorhatte. Ebenso habe ich absolut keine Ahnung, was Sie auch tun. Was versuchst du zu machen? –

+0

Ich habe meine Antwort mit dem spezifischen Anwendungsfall, den ich nachher gehe, und einem Beispiel aktualisiert – nflacco

+0

Warum um Gottes willen ist diese Frage hier migriert anstatt des Superusers? – jm666

Antwort

9

Standardmäßig arbeiten tun-Geräte im Layer-3-Modus, auch bekannt als Point-to-Point. Sie fragen nach dem Layer 2-Modus, der einem generischen Ethernet-Gerät ähnlicher ist. Linux ruft diese Tap-Geräte auf. In OpenBSD können Sie mit "ifconfig tun0 link0" ein Tun-Gerät in den Layer-2-Modus schalten. Der Macintosh-tuntaposx-Treiber ahmt Linux-Gerätescheime nach; Öffne stattdessen ein Tap-Gerät.

Sie könnten überprüfen, https://community.openvpn.net/openvpn/wiki/BridgingAndRouting, um festzustellen, ob Sie wirklich tippen möchten Geräte. Sie fügen ein wenig Overhead hinzu. Wenn Sie nur zwei Boxen benötigen, um IP-Pakete untereinander zu übertragen und kein Bridging oder Broadcasting zu einem größeren Subnetz durchzuführen, sollte Punkt zu Punkt ausreichend sein.

Zum Beispiel, wenn Sie zwei Maschinen haben, eine bezeichnen wir "local" mit einer LAN-IP-Adresse wie 192.168.0.12 und eine andere bezeichnen wir "remote" mit einer LAN-IP-Adresse wie 192.168.1.14, können Sie zuweisen Tunnel IP-Adressen so:

ifconfig tun0 inet 10.0.0.1 10.0.0.2 up 

auf dem lokalen System, und:

ifconfig tun0 inet 10.0.0.2 10.0.0.1 up 

auf dem Remote-System. Beachten Sie die umgekehrte Perspektive auf dem Remotecomputer. Setzen Sie Ihren Punkt nicht auf Punktadressen zu irgendetwas in einem vorhandenen Subnetz; es wird nicht richtig routen.

Ich kann nicht genug betonen: lesen und lesen Sie die Manual-Seiten ("man ifconfig" und "man tun", wahrscheinlich andere), bis sie sinnvoll sind. Meine obigen ifconfig-Beispiele unterscheiden sich möglicherweise geringfügig von Ihrem Betriebssystem.

Und für eine andere Perspektive könnten Sie in GRE-Tunnel schauen, wie ihre Funktionalität spiegelt, was Sie für Ihr Programm beschreiben. GRE ist jedoch in heutigen TCP-zentrierten Netzwerken wahrscheinlich nicht praktikabel, und es ist auch keine gute Idee aufgrund von großen Sicherheitsproblemen.

Wenn Sie eine überfordernde Firewall umgehen möchten, beachten Sie, dass viele solcher Firewalls UDP- (und insbesondere GRE-) Pakete blockieren. Versuchen Sie in einem solchen Fall SSH-Schnittstellen-Tunneling, um tun/tap-Schnittstellen einzurichten und Pakete weiterzuleiten. Sie erhalten Verschlüsselung und optional auch Komprimierung. :)

+0

Ah, das macht Sinn. Ich habe nicht bemerkt, dass tun in bsd (http://www.monkey.org/openbsd/archive/tech/0406/msg00111.html) eingebaut war. Auf Linux glaube ich, dass das Gleiche passiert ist. – nflacco

+0

Dieser Patch bezieht sich nur auf OpenBSD und geht von den Manpages von FreeBSD 9.1 und NetBSD 6 aus. OpenBSD ist der Ungerade, der tap nicht von tun/dev trennt. – dobbs

Verwandte Themen