ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.osdep.5.pod
Revision: 1.10
Committed: Fri Mar 25 16:05:22 2005 UTC (19 years, 2 months ago) by pcg
Branch: MAIN
CVS Tags: rel-1_9
Changes since 1.9: +9 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 =head1 NAME
2    
3     gvpe.osdep - os dependent information
4    
5     =head1 DESCRIPTION
6    
7     This file tries to capture OS-dependent configuration or build issues,
8     quirks and platform limitations, as known.
9    
10 pcg 1.9 =head1 TUN vs. TAP interface
11 pcg 1.1
12     Most operating systems nowadays support something called a
13     I<tunnel>-device, which makes it possible to divert IPv4 (and often other
14     protocols, too) into a userspace daemon like C<gvpe>. This is being
15     referred to as a TUN-device.
16    
17     This is fine for point-to-point tunnels, but for a virtual ethernet, an
18     additional ethernet header is needed. This functionality (called a TAP
19     device here) is only provided by a subset of the configurations.
20    
21     On platforms only supporting a TUN-device, gvpe will invoke it's magical
22     ethernet emulation package, which currently only handles ARP requests for
23     the IPv4 protocol (but more could be added, bu the tincd network drivers
24     might need to be modified for this to work). This means that on those
25     platforms, only IPv4 will be supported.
26    
27     Also, since there is no way (currently) to tell gvpe which IP subnets are
28     found on a specific host, you will either need to hardwire the MAC address
29     for TUN-style hosts on all networks (and avoid ARP altogether, which is
30     possible), or you need to send a packet from these hosts into the vpn
31     network to tell gvpe the local interface address.
32    
33 pcg 1.9 =head1 Interface Initialisation
34 pcg 1.8
35 pcg 1.9 Unless otherwise notes, the network interface will be initialized with the
36     expected MAC address and correct MTU value. With most interface drivers,
37 pcg 1.8 this is done by running C</sbin/ifconfig>, so make sure that this command
38     exists.
39    
40 pcg 1.9 =head1 Interface Types
41    
42 pcg 1.1 =head2 native/linux
43    
44 pcg 1.3 TAP-device; already part of the kernel (only 2.4+ supported, but see
45 pcg 1.1 tincd/linux). This is the configuration tested best, as gvpe is being
46     developed on this platform.
47    
48 pcg 1.8 C<ifname> should be set to the name of the network device.
49 pcg 1.1
50 pcg 1.4 To hardwire ARP addresses, use iproute2 (C<arp> can do it, too):
51 pcg 1.1
52     MAC=fe:fd:80:00:00:$(printf "%02x" $NODEID)
53     ip neighbour add 10.11.12.13 lladdr $MAC nud permanent dev $IFNAME
54    
55     =head2 tincd/linux
56    
57 pcg 1.8 TAP-device; already part of the kernel (2.2 only). See
58 pcg 1.3 C<native/linux> for more info.
59 pcg 1.1
60 pcg 1.8 C<ifname> should be set to the path of a tap device,
61     e.g. C</dev/tap0>. The interface will be named accordingly.
62    
63 pcg 1.1 =head2 native/cygwin
64    
65 pcg 1.3 TAP-device; The TAP device to be used must either be the CIPE driver
66     (C<http://cipe-win32.sourceforge.net/>), or (highly recommended) the newer
67     TAP-Win32 driver bundled with openvpn (http://openvpn.sf.net/). Just
68     download and run the openvpn installer. The only option you need to select
69     is the TAP driver.
70    
71 pcg 1.8 C<ifname> should be set to the name of the device, found in the registry
72     at (no kidding :):
73    
74     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\<adapterid>\Connection\Name
75    
76     The MAC address is dynamically being patched into packets and
77     ARP-requests, so only IPv4 works with ARP on this platform.
78 pcg 1.1
79 pcg 1.10 =head2 tincd/bsd
80    
81     TAP-device, maybe; migth work for many bsd variants.
82    
83     This driver is a newer version of the C<tincd/*bsd> drivers. It I<might>
84     provide a TAP device, or might not work at all. You might try this
85     interface type first, and, if it doesn't work, try one of the OS-specific
86     drivers.
87    
88 pcg 1.1 =head2 tincd/freebsd
89    
90 pcg 1.8 TAP-device; part of the kernel (since 4.x, maybe earlier).
91 pcg 1.1
92 pcg 1.8 C<ifname> should be set to the path of a tap device,
93     e.g. C</dev/tap0>. The interface will be named accordingly.
94 pcg 1.1
95 pcg 1.7 These commands might be helpful examples:
96    
97     ifconfig $IFNAME 10.0.0.$NODEID
98     route add -net 10.0.0.0 -netmask 255.255.255.0 -interface $IFNAME 10.0.0.$NODEID
99    
100 pcg 1.1 =head2 tincd/netbsd
101    
102 pcg 1.8 TUN-device; The interface is a point-to-point device. To initialize it,
103     you currently need to configure it as a point-to-point device, giving it
104     an address on your vpn (the exact address doesn't matter), like this:
105 pcg 1.1
106     ifconfig $IFNAME mtu $MTU up
107     ifconfig $IFNAME 10.11.12.13 10.55.66.77
108     route add -net 10.0.0.0 10.55.66.77 255.0.0.0
109     ping -c1 10.55.66.77 # ping once to tell gvpe your gw ip
110    
111 pcg 1.8 The ping is required to tell the ARP emulator inside GVPE the local IP
112     address.
113    
114     C<ifname> should be set to the path of a tun device,
115     e.g. C</dev/tun0>. The interface will be named accordingly.
116    
117 pcg 1.1 =head2 tincd/openbsd
118    
119 pcg 1.3 TUN-device; already part of the kernel. See C<tincd/netbsd> for more information.
120 pcg 1.1
121 pcg 1.6 =head2 native/darwin
122 pcg 1.1
123 pcg 1.6 TAP-device;
124 pcg 1.1
125     The necessary kernel extension can be found here:
126    
127 pcg 1.6 http://www-user.rhrk.uni-kl.de/~nissler/tuntap/
128    
129     There are two drivers, the one to use is the "tap" driver. It driver must
130 pcg 1.7 be loaded before use, read the docs on how to install it as a startup
131     item.
132    
133 pcg 1.8 C<ifname> should be set to the path of a tap device,
134     e.g. C</dev/tap0>. The interface will be named accordingly.
135 pcg 1.7
136     These commands might be helpful examples:
137    
138     ifconfig $IFNAME 10.0.0.$NODEID
139     route add -net 10.0.0.0 -interface $IFNAME 255.255.255.0
140 pcg 1.6
141     =head2 tincd/darwin
142 pcg 1.1
143 pcg 1.6 TUN-device; See C<tincd/netbsd> for more information. C<native/darwin> is
144     preferable.
145 pcg 1.3
146 pcg 1.6 The necessary kernel extension can be found here:
147 pcg 1.3
148 pcg 1.6 http://chrisp.de/en/projects/tunnel.html
149 pcg 1.5
150 pcg 1.8 C<ifname> should be set to the path of a tun device,
151     e.g. C</dev/tun0>. The interface will be named accordingly.
152    
153 pcg 1.5 The driver must be loaded before use:
154    
155     kmodload tunnel
156 pcg 1.3
157 pcg 1.1 =head2 tincd/solaris
158    
159 pcg 1.7 TUN-device; already part of the kernel(?), or available here:
160 pcg 1.5
161     http://vtun.sourceforge.net/tun/
162    
163     Some precompiled tun drivers might be available here:
164    
165     http://www.monkey.org/~dugsong/fragroute/
166    
167 pcg 1.8 The interface MAC and MTU are I<NOT> set up for you. Please try it out and
168     send me an C<ifconfig> command invocation that does that.
169    
170 pcg 1.5 See C<tincd/netbsd> for more information.
171    
172     Completely unstested so far.
173 pcg 1.1
174     =head2 tincd/mingw
175    
176 pcg 1.5 TAP-device; see C<native/cygwin> for more information.
177    
178 pcg 1.8 The setup is likely to be similar to C<native/cygwin>.
179    
180 pcg 1.5 Completely untested so far.
181    
182     =head2 tincd/raw_socket
183    
184     TAP-device; purpose unknown and untested, probably binds itself on an
185 pcg 1.8 existing ethernet device (given by C<ifname>). It must be down prior to
186     running the command, and GVPE will try to set it's MAC address and MTU to
187     the "correct" values.
188    
189     Completely untested so far.
190 pcg 1.5
191     =head2 tincd/uml_socket
192    
193     TAP-device; purpose unknown and untested, probably creates a unix datagram
194     socket (path given by C<ifname>) and reads and writes raw packets, so
195     might be useful in other than UML contexts.
196 pcg 1.1
197 pcg 1.8 No network interface is created, and the MAC and MTU must be set as
198     approriate on the other side of the socket. GVPE will exit if the MAC
199     address doesn't match what it expects.
200    
201     Completely untested so far.
202    
203 pcg 1.1 =head2 tincd/cygwin
204    
205 pcg 1.5 Known to be broken, use C<native/cygwin> instead.
206 pcg 1.1
207     =head1 SEE ALSO
208    
209     gvpe(5).
210    
211     =head1 AUTHOR
212    
213     Marc Lehmann <gvpe@plan9.de>
214