summaryrefslogtreecommitdiff
path: root/static/openbsd/man4/rdomain.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/openbsd/man4/rdomain.4')
-rw-r--r--static/openbsd/man4/rdomain.4161
1 files changed, 161 insertions, 0 deletions
diff --git a/static/openbsd/man4/rdomain.4 b/static/openbsd/man4/rdomain.4
new file mode 100644
index 00000000..06100606
--- /dev/null
+++ b/static/openbsd/man4/rdomain.4
@@ -0,0 +1,161 @@
+.\" $OpenBSD: rdomain.4,v 1.19 2022/07/29 18:28:32 kn Exp $
+.\"
+.\" Copyright (c) 2015 Peter Hessler <phessler@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd $Mdocdate: July 29 2022 $
+.Dt RDOMAIN 4
+.Os
+.Sh NAME
+.Nm rtable ,
+.Nm rdomain
+.Nd routing tables and routing domains
+.Sh DESCRIPTION
+The traditional kernel routing system had a single table for routes and
+allowed only non-conflicting IP address assignments.
+The
+.Nm rtable
+feature allows multiple lookup tables for routes.
+The
+.Nm rdomain
+feature provides a way to logically segment a router
+between network paths.
+.Ss Routing tables
+Each
+.Nm rtable
+contains routes for outbound network packets.
+A routing domain can contain more than one
+.Nm rtable .
+Multiple routing tables are commonly used for Policy Based Routing.
+.Pp
+The highest ID that can be used for an
+.Nm rtable
+is 255.
+.Ss Routing domains
+Each
+.Nm rdomain
+is a completely separate address space in the kernel.
+An IP address (e.g. 10.0.0.1/16) can be assigned in more than one
+.Nm rdomain ,
+but cannot be assigned more than once per
+.Nm rdomain .
+An interface belongs to one and only one
+.Nm rdomain .
+The interface's
+.Nm rdomain
+determines which rdomain an incoming packet will
+be in.
+Virtual interfaces do not need to belong to the same
+.Nm rdomain
+as the parent.
+Each
+.Nm rdomain
+contains at least one routing table.
+.Pp
+Network traffic within an
+.Nm rdomain
+stays within the current routing domain.
+.Xr pf 4
+is used to move traffic from one
+.Nm rdomain
+to a different
+.Nm rdomain .
+.Pp
+When an interface is assigned to a non-existent
+.Nm rdomain ,
+it gets created automatically.
+At the same time an
+.Nm rtable
+with the same ID and a
+.Xr lo 4
+interface with a unit number matching the ID get created and assigned to the new
+domain.
+.Pp
+An rdomain can be deleted by removing all interfaces from it and then
+destroying the
+.Xr lo 4
+interface with the unit number matching the ID.
+.Pp
+The highest ID that can be used for an
+.Nm rdomain
+is 255.
+.Sh EXAMPLES
+Put em0 and lo4 in rdomain 4:
+.Bd -literal -offset indent
+# ifconfig em0 rdomain 4
+# ifconfig lo4 inet 127.0.0.1/8
+# ifconfig em0 192.0.2.100/24
+.Ed
+.Pp
+List all rdomains with associated interfaces and routing tables:
+.Pp
+.Dl $ netstat -R
+.Pp
+Set a default route and localhost reject route within rtable 4:
+.Bd -literal -offset indent
+# route -T4 -qn add -net 127 127.0.0.1 -reject
+# route -T4 -n add default 192.0.2.1
+.Ed
+.Pp
+Start
+.Xr sshd 8
+in rtable 4:
+.Pp
+.Dl # route -T4 exec /usr/sbin/sshd
+.Pp
+Display the routing table used by each process:
+.Pp
+.Dl $ ps aux -o rtable
+.Pp
+Display the routing table of the current process:
+.Pp
+.Dl $ id -R
+.Pp
+A
+.Xr pf.conf 5
+snippet to block incoming port 80,
+and nat-to and move to rtable 0 on interface em1:
+.Bd -literal -offset indent
+block in on rdomain 4 proto tcp to any port 80
+match out on rdomain 4 to !$internal_net nat-to (em1) rtable 0
+.Ed
+.Pp
+Delete rdomain 4 again:
+.Bd -literal -offset indent
+# ifconfig em0 -rdomain
+# ifconfig lo4 destroy
+.Ed
+.Sh SEE ALSO
+.Xr id 1 ,
+.Xr netstat 1 ,
+.Xr ps 1 ,
+.Xr lo 4 ,
+.Xr route 4 ,
+.Xr pf.conf 5 ,
+.Xr ifconfig 8 ,
+.Xr route 8
+.Sh HISTORY
+.Ox
+support for
+.Nm rdomain
+first appeared in
+.Ox 4.9
+and IPv6 support first appeared in
+.Ox 5.5 .
+.Sh CAVEATS
+No tool is available to assign more than one rtable to an rdomain
+other than to the default one (0).
+.Pp
+An rtable cannot be deleted.
+Deleting an rdomain will move its rtable into the default rdomain.