diff options
Diffstat (limited to 'content/posts/openbsd-vpn-gateway/index.org')
-rw-r--r-- | content/posts/openbsd-vpn-gateway/index.org | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/content/posts/openbsd-vpn-gateway/index.org b/content/posts/openbsd-vpn-gateway/index.org index 59082a1..1b07a26 100644 --- a/content/posts/openbsd-vpn-gateway/index.org +++ b/content/posts/openbsd-vpn-gateway/index.org @@ -227,3 +227,45 @@ Setting =net.inet.ip.forwarding= to =1= tells the kernel to forward any packets it receives that aren't destined for any of its interfaces according to its routing table and firewall rules. + +** PF + At this point, we're forwarding the incoming packets out the VPN + tunnel, but they have no method to find their way back to us. This + is because when we're forwarding them, they still have their LAN + (Local Area Network) IP addresses (=192.168.X.X=) as the sender + address. In order for these to successfully traverse the internet, + they're going to need a WAN (Wide Area Network) address. That's + what you might call an external IP. + + To accomplish this, we use something called a NAT (Network Address + Translation). This allows us to map many local (LAN), IP + addresses to a single external (WAN) IP address. We do this using + OpenBSD's firewall, PF. + + This is what our new [[http://man.openbsd.org/man5/pf.conf.5][=pf.conf(5)=]] will look like. + + #+BEGIN_SRC c + set skip on lo + + block return # block stateless traffic + + # By default, do not permit remote connections to X11 + block return in on ! lo0 proto tcp to port 6000:6010 + + # Port build user does not need network + block return out log proto {tcp udp} user _pbuild + + ##################################### + # VPN + ##################################### + + ext_if = "vio0" + + pass in on $ext_if + pass out on $ext_if from self # ($ext_if) + + match out on tun0 from $ext_if:network to any nat-to (tun0) + pass out on tun0 + #+END_SRC + + Let's go through this line by line to see what's going on. |