OpenBSD as router
this guide will show how to OpenBSD as router
goals:
- build a router
- dhcp
- unbound
- guast network
forward traffic
## forward v4 and v6 traffic
> echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf
> echo 'net.inet6.ip6.forwarding=1' >> /etc/sysctl.conf
setup interfaces
## wan dhcp
> echo 'dhcp' > /etc/hostname.vr0
## lan networks
> echo 'inet 192.168.0.1 255.255.255.0 192.168.0.255' > /etc/hostname.vr1
> echo 'inet 192.168.1.1 255.255.255.0 192.168.1.255' > /etc/hostname.vr2
dhcp
## configure dhcpd
> rcctl enable dhcpd
> rcctl set dhcpd flags vr1 vr2
## edit /etc/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
range 192.168.0.4 192.168.0.254;
host myserver {
fixed-address 192.168.0.2;
hardware ethernet 00:00:00:00:00:00;
}
host mylaptop {
fixed-address 192.168.1.3;
hardware ethernet 11:11:11:11:11:11;
}
}
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
range 192.168.1.2 192.168.1.254;
}
configure pf
## edit /etc/pf.conf
ext_if = "vr0"
int_if = "vr1"
dmz_if = "vr2"
lan_net = "192.168.0.0/24"
dmz_net = "192.168.1.0/24"
set block-policy drop
set loginterface egress
set skip on lo0
match in all scrub (no-df random-id max-mss 1440)
match out on egress inet from !(egress:network) to any nat-to (egress:0)
antispoof quick for { egress $int_if $dmz_if }
block all
pass out quick
pass in on $int_if
pass in on $dmz_if from $dmz_if:network to any
pass in on egress inet6 proto icmp6 all icmp6-type { routeradv neighbrsol neighbradv }
pass in on egress inet6 proto udp from fe80::/10 port dhcpv6-server to fe80::/10 port dhcpv6-client no state
pass in on egress inet6 proto icmp6 all icmp6-type echoreq
pass in on egress inet proto icmp all icmp-type echoreq
block in from $dmz_if:network to $lan_net
dns
## enable service
> rcctl enable unbound
## edit vi /var/unbound/etc/unbound.conf
server:
interface: 192.168.0.1
interface: 192.168.1.1
interface: 127.0.0.1
access-control: 192.168.0.0/24 allow
access-control: 192.168.1.0/24 allow
do-not-query-localhost: no
hide-identity: yes
hide-version: yes
forward-zone:
name: "." # use for ALL queries
forward-addr: 176.9.93.198 # dnsforge.de Werbeblocker
forward-addr: 2a01:4f8:151:34aa::198 # dnsforge.de Werbeblocker
forward-addr: 176.9.1.117 # dnsforge.de Werbeblocker
forward-addr: 2a01:4f8:141:316d::117 # dnsforge.de Werbeblocker
forward-addr: 46.182.19.48 # Digital Courage ev
forward-addr: 2a02:2970:1002::18 # Digital Courage ev
forward-addr: 80.241.218.68 # dismail Werbe- und Tracking-Filterliste
forward-addr: 2a02:c205:3001:4558::1 # dismail Werbe- und Tracking-Filterliste
forward-addr: 94.75.228.29 # Chaos Computer Club
forward-addr: 64.6.64.6 # Verisign
forward-addr: 2a02:2970:1002::18 # Chaos Computer Club
forward-addr: 1.1.1.1 # cloudflare
forward-addr: 8.8.8.8 # Google
forward-first: yes # try direct if forwarder fails
## restart service
> rcctl restart unbound
slow boot
## == disable "reordering libraries" at boot time
rcctl disable library_aslr
at this moment i dont know if this cmd run library_aslr later or never
to definely disable userc.conf
flags