Tunnel ethernet over EVERYTHING!
Go to file
Sebastian Lohff 57627a3637 Actually use provided devname
Bug found / patch proposed by Kai
2016-07-22 17:17:36 +02:00
tunnel SMTP: Added random Subjects, cleanup 2012-02-07 19:40:59 +01:00
.gitignore Initial commit 2011-10-30 01:22:45 +02:00
README Ether2Any README fixes 2012-01-15 01:48:36 +01:00
__init__.py Initial commit 2011-10-30 01:22:45 +02:00
ether2any.py Added documentation for Ether2Any 2012-01-12 00:34:12 +01:00
helper.py Initial commit 2011-10-30 01:22:45 +02:00
pytap.py Actually use provided devname 2016-07-22 17:17:36 +02:00


Ether2Any and PyTap
Ether2Any is a Python base class for writing arbitrary Ethernet/IP tunnels
using a TUN/TAP device.

PyTap is a Python class for handling a TUN/TAP device. It exposes
reading/writing to the device and abstracts a bit of the network configuration.

Installation and requirements
Just put it somewhere and import it. For PyTaps network configuration
functions you need /sbin/ifconfig.

How to write an Ethernet/IP tunnel
Writing a tunnel with this is rather easy. All you have to do is to create a
class inheriting from Ether2Any and implement the method sendToNet().
sendToNet() will be called for each incoming network packet. If you add extra
sockets to the select loop via addSocket, sendToDev() needs to be implemented,
which gets the socket with the new data. If you don't want to rely on select you
are free to pass self.dev (which is a PyTap() instance) and call dev.write()
whenever you like. Note that if you write invalid network packets on it, you may
get an exception.

Afterwards you can instantiate your class and call the run() method to start
your tunnel.

What could be done
 * Builtin packet aggregation would be nice
 * Various FIXMEs/TODOs
 * Replace ifconfig with the ip utility
 * Add plugin architecture to PyTap for traffic mangling
 * setuptools/pypi dance