Initial check-in.
This commit is contained in:
commit
ec85065603
2
COPYING
Normal file
2
COPYING
Normal file
@ -0,0 +1,2 @@
|
||||
GNU General Public License, version 2 or any later version.
|
||||
See GPL-2 or GPL-3 for the full text of these licenses.
|
39
README.md
Normal file
39
README.md
Normal file
@ -0,0 +1,39 @@
|
||||
ABSURD: A bewilderingly silly userspace routing daemon
|
||||
======================================================
|
||||
|
||||
ABSURD is a TCP/IP routing and firewalling tool for performing stateful
|
||||
firewalling and routing of IP traffic according to configurable rules.
|
||||
|
||||
Right now, no code exists, but the idea is as follows:
|
||||
|
||||
- The daemon will consist of a core packet switch which listens on a `tun`
|
||||
interface and exposes some virtual subnets to the host, whilst providing an
|
||||
interface to those subnets via a Unix-domain socket.
|
||||
|
||||
- Plug-in applications then connect to the Unix-domain socket and can
|
||||
"register" interest in receiving particular subsets of the traffic routed to
|
||||
the virtual subnet. They can also bind to virtual addresses on those
|
||||
subnets to be able to initiate communications.
|
||||
|
||||
Some possible applications:
|
||||
- Stateful NAT64 (RFC-6146) and NAT46 (draft-liu-behave-nat46-02), including
|
||||
cross-protocol port forwarding.
|
||||
- DNS64 (RFC-6147)
|
||||
- PCP (RFC-6887)
|
||||
- SNI-based routing, so your TLS server's logs show an IPv6 address derived
|
||||
from the address of the IPv4 client for auditing purposes, instead of the IP
|
||||
address of your SNI proxy server.
|
||||
- Application-level firewalling (e.g. let your Wordpress blog access Wordpress
|
||||
for security updates without having to know every IP they host sites on),
|
||||
- Deep-packet inspection.
|
||||
|
||||
This is obviously not a replacement for netfilter, pf or any other firewall
|
||||
you care to name. It's a compliment to it. Passing packets in and out of
|
||||
userspace has the distinct downside of performance penalties, thus for high
|
||||
performance routing, any kernel solution is going to run rings around this.
|
||||
|
||||
That said, on small home/business networks, the Internet link is typically
|
||||
100Mbps or less, and even a Raspberry Pi packs a decent amount of computing
|
||||
oomph. Likely, we should be able to keep up with most small Internet
|
||||
connections. The aim will be for something that can keep up with ADSLv2 and
|
||||
similar grade links on modest hardware.
|
Loading…
Reference in New Issue
Block a user