diff --git a/docs/add_net.md b/docs/add_net.md index 7dd9b4c..2112ab3 100644 --- a/docs/add_net.md +++ b/docs/add_net.md @@ -82,3 +82,4 @@ IPv6, and VLAN ID. Each can be visually compared to the others.) - [`add_v4_net`](add_v4_net.md) - [`add_v6_net`](add_v6_net.md) - [`add_vlan`](add_vlan.md) + - [`add_rtadv`](add_rtadv.md) diff --git a/docs/add_rtadv.md b/docs/add_rtadv.md new file mode 100644 index 0000000..1020c5e --- /dev/null +++ b/docs/add_rtadv.md @@ -0,0 +1,38 @@ +# `add_rtadv` Command + +## Name + +`add_rtadv` + +## Synopsis + +``` +add_rtadv ${card} ${vlan} +``` + +## Description + +Adds the network defined by the specified `${card}` and `${vlan}` to the list of +interfaces to be advertised by `rtadvd`. + +The internal implementation prevents adding duplicate interfaces to the +advertisement list, by checking for their presence before adding. +It can safely be used alongside manual changes to `rc.conf` changes to +the `rtadvd_interfaces` variable. + +Additionally, the `${rc_router_dir}/rc.d/generate_rtadvd_conf` service script +will generate `${rc_router_gen_dir}/rtadvd.conf` with `${interface}:tc=settings` +lines therein which can be used by the `rtadvd` that comes with FreeBSD. +Various `rc.router` [variables](variables.md) can be used to control the global +settings for all advertised IPv6 networks. + +## Examples + +``` +add_rtadv xy0 123 # Adds `xy0.123` to `rtadvd_interfaces` +add_rtadv abc3 765 # Adds `abc3.765` to `rtadvd_interfaces` +``` + +## See Also + - [`add_net`](add_net.md) + - [`add_rtadv`](add_rtadv.md) diff --git a/docs/add_vlan.md b/docs/add_vlan.md index 14a66d4..82b1838 100644 --- a/docs/add_vlan.md +++ b/docs/add_vlan.md @@ -29,6 +29,7 @@ add_vlan abc3 765 # Creates abc3.765 ## See Also - [`add_net`](add_net.md) + - [`add_rtadv`](add_rtadv.md) - [`add_v4_net`](add_v4_net.md) - [`add_v6_net`](add_v6_net.md) - [`clone_interface`](clone_interface.md) diff --git a/docs/variables.md b/docs/variables.md new file mode 100644 index 0000000..34afb8d --- /dev/null +++ b/docs/variables.md @@ -0,0 +1,265 @@ +# `rc.router` Configuration Variables + +## `rc_router_ula_prefix_size` + +### Description + +Used to control the size of IPv6 ULA prefixes. Can be either `48` or `56` + +### Example + +``` +rc_router_ula_prefix_size="48" # Generate `/48` IPv6 ULAs +rc_router_ula_prefix_size="56" # Generate `/56` IPv6 ULAs +``` + +*** + +## `rc_router_network_name` + +### Description + +A user-defined free-form string to provide sufficient "uniqueness" to generate ULA +prefixes with sufficiently low probability of collision. The user defined string +permits a user to remember the uniqueness "seed" without having to remember 40 +or more random bits worth of hexidecimal digits. + + +### Example + +``` +rc_router_network_name="This is my really awesome network!" +``` + +#### Note + +The `${secret_ip6_net}` undocumented variable can be used in `rc.d` scripts to +expand to the user generated ULA prefix. The name of this undocumented variable +might change in the future. + +*** + +## `v6_prefix_len` + +### Description + +This variable should only be set in ISP hints files. It informs `rc.router` what +IPv6 prefix size to request from that ISP. Users may provide their own hints +files in `${rc_router_conf_dir}/hints` -- hints files which are in the user +configuration directory will override the pre-packaged hints. + +### Example + +``` +v6_prefix_len="63" # This ISP is pretty awful! +v6_prefix_len="48" # This ISP is very generous. +``` + +*** + +## `v4_net` + +### Description + +This variable defines a `/16` of IPv4 space inside which internal IPv4 networks +are constructed. In addition, `v4_net_${iface}` may be used to specify a `/16` +prefix for all VLANs on a specific internal interface. + +### Example + +``` +v4_net="192.168" # This is pretty typical + +# Use a `/16` to differentiate the VLANs created on different physical interfaces. +v4_net_xy1="172.21" +v4_net_xy2="172.22" +``` + +*** + +## `rc_router_gen_dir` + +### Description + +This variable defines a director into which the configuration files for services +will be generated. By default it is `${rc_router_conf_dir}/gen`. + +### Example + +``` +rc_router_gen_dir="/tmp/rc-router-gen/" +``` + +*** + +## `dhcpv4_pool_lo` + +### Description + +This variable defines the lower bound of DHCPv4 pools for auto-generated `/24` +networks constructed by [`add_v4_net`](add_v4_net.md) or [`add_net`](add_net.md). +These pools can also be specified per-physical-interface (but not vlan) by using +`dhcpdv4_pool_lo_${iface}`. + +### Example + +``` +dhcpv4_pool_lo="10" # For most networks, start the dynamic pool at 10. +dhcpv4_pool_lo_xy0="200" # For networks on `xy0`, start the dynamic pool at 200. +``` + +*** + +## `dhcpv4_pool_hi` + +### Description + +This variable defines the upper bound of DHCPv4 pools for auto-generated `/24` +networks constructed by [`add_v4_net`](add_v4_net.md) or [`add_net`](add_net.md). +These pools can also be specified per-physical-interface (but not vlan) by using +`dhcpdv4_pool_hi_${iface}`. + +### Example + +``` +dhcpv4_pool_hi="20" # For most networks, end the dynamic pool at 20. +dhcpv4_pool_hi_xy0="240" # For networks on `xy0`, start the dynamic pool at 240. +``` + + +*** + +## `rtadvd_pltimedecr` + +### Description + +Controls whether the `pltimedecr` flag is set on generated router advertisement +configuration files for IPv6. Defaults to `NO`. + +### Example + +``` +rtadvd_pltimedecr="YES" # Enable `pltimedecr` in generated `rtadvd.conf` files. +``` + +*** + +## `rtadvd_vltimedecr` + +### Description + +Controls whether the `vltimedecr` flag is set on generated router advertisement +configuration files for IPv6. Defaults to `NO`. + +### Example + +``` +rtadvd_vltimedecr="YES" # Enable `vltimedecr` in generated `rtadvd.conf` files. +``` + +*** + +## `rtadvd_dns_search_list` + +### Description + +Allows the user to specify a list of search domain suffices to be delivered to +all IPv6 clients. + +### Example + +``` +# Add the specified domains to the DNS search lists for `rtadvd`. +rtadvd_dns_search_list="example.com local.example.com" +``` + +*** + +## `rtadvd_pref64_prefix` + +### Description + +Allows the user to specify a NAT64 prefix for all networks advertised by +`rtadvd`. Note -- do not put the `/96` netmask suffix. This is useful +for building IPv6-only and IPv6-mostly networks that have to be compatible +with legacy IPv4 destinations. + +### Example + +``` +# Add the specified domains to the DNS search lists for `rtadvd`. +rtadvd_pref64_prefix="64:ff9b::" +``` + +*** + +## `rtadvd_mininterval` + +### Description + +Allows the user to specify the minimum router advertisement interval. + +### Example + +``` +rtadvd_mininterval="300" # Advertise no more frequently than every 5 minutes. +``` + +*** + +## `rtadvd_maxinterval` + +### Description + +Allows the user to specify the maximum router advertisement interval. + +### Example + +``` +rtadvd_maxinterval="1800" # Advertise less more frequently than every half hour. +``` + +*** + +## `rtadvd_pltime` + +### Description + +Allows the user to specify the preferred lifetime for prefixes advertised by this +router. + +### Example + +``` +rtadvd_pltime="300" # Advertise a preferred prefix lifetime of 5 minutes. +``` + +*** + +## `rtadvd_vltime` + +### Description + +Allows the user to specify the valid lifetime for prefixes advertised by this +router. + +### Example + +``` +rtadvd_vltime="900" # Advertise a valid prefix lifetime of 15 minutes. +``` + +*** + +## `rtadvd_rltime` + +### Description + +Allows the user to specify the valid lifetime for the routing destination +advertised by this router. + +### Example + +``` +rtadvd_rltime="900" # Advertise a router advertisement lifetime of 15 minutes. +```