Hi, I'm trying to setup a pair of OpenBSD machines to handle their respective home networks and create a IKEv2 VPN tunnel between them. If I call one side _home_ and one side _remote_ I think that defines things. The main function of the tunnel is to allow stuff on the _remote_ network to access services in the _home_ network. As a second function, I want a handful of hosts in the _remote_ network to consume the internet via the _home_ network's ISP. My `iked.conf` files look like this:
``` ## Home: (responder) home_network="192.168.1.0/24" remote_network="192.168.2.0/24" ikev2 passive esp \ from any to dynamic \ from $home_network to $remote_network \ ... config address 192.168.128.16/32 \ config access-server 192.168.128.1 ## ## Remote: (Initiator) ## ikev2 passive esp \ ## from dynamic to any\ ## from $remote_network to $home_network \ ## ... ## request address any \ ## iface enc0 ``` I've shown both configs here. The _remote_ config is commented out. The otherside `iked.conf` is vice-versa. This gets the tunnel up and running. All works as I expect it to and when I do this: ``` # traceroute -s 192.168.128.16 8.8.8.8 ... ``` The traceroute goes over the VPN tunner first as I expect it to. I figured, **incorrectly** that at this point it would be just a matter of some _pf_ magic to get a host on the remote side NATted to tunnel address such that it's packets would traverse the tunnel and then shuffle off to their designed destination. I've tried this: ``` ## pf.conf ext_if=em0 vpn_if=enc0 match out on $ext_if from !($ext_if) to any tag "USE-PLAIN-NAT" match out on $vpn_if from <full-vpn> to any tag "USE-FULL-VPN" match out on $ext_if tagged "USE-PLAIN-NAT" nat-to ($ext_if) ... match out on $vpn_if tagged "USE-FULL-VPN" nat-to ($vpn_if) ``` But I get no joy. At best, the packets which should be tagged "USE-FULL-VPN" get natted and emitted out of my "$ext_if". I'm clearly missing something. I'm referencing these links in the web: * https://www.openbsd.org/faq/faq17.html * https://man.openbsd.org/iked.conf As my gotos but I'm clearly missing some which may be really obvious. As an aside, In a VPN situation like this, how does the kernel make decisions about where the packets pass through? Thanks! -- Chris __o "All I was trying to do was get home from work." _`\<,_ -Rosa Parks ___(*)/_(*)____.___o____..___..o...________ooO..._____________________ Christopher Sean Hilton [chris/at/vindaloo/dot/com]