<div dir="ltr"><div><div><div><div>Hi list,<br><br>while configuring my roadwarrior device I stumbled upon some problems.<br><br>I am trying to archive the following scenario:<br>*) vpn gateway is up and running at home<br>*) roadwarrior should be a nat gateway transparently tunneling all traffic<br>   through vpn connection<br><br>So basically my configuration works. The roadwarrior device is up and running<br>and traffic originating at the host itself is properly tunneled through vpn.<br><br>The roadwarrior is configured for forwarding and masquerading traffic from local<br>subnet. Traffic is masqueraded and world is reachable, but it is _not_ tunneled<br>through running vpn.<br><br>Configuration as follows:<br><br>swanctl.conf:<br>connections {<br>        home {<br>                version = 1<br>                remote_addrs = <REMOTE_FQDN><br>                proposals = aes256-sha1-modp1024<br>                vips = 0.0.0.0<br>                unique = keep<br>                local-psk {<br>                        auth = psk<br>                        id = <LOCAL_ID><br>                }<br>                local-xauth {<br>                        auth = xauth<br>                        xauth_id = <LOCAL_ID><br>                }<br>                remote-psk {<br>                        auth = psk<br>                }<br>                children {<br>                        home {<br>                                esp_proposals = aes256-sha1<br>                                remote_ts = <a href="http://0.0.0.0/0">0.0.0.0/0</a><br>                                updown = /usr/lib/strongswan/_updown iptables<br>                                dpd_action = restart<br>                                start_action = start<br>                        }<br>                }<br>        }<br>        local {<br>                local {<br>                }<br>                children {<br>                        local-lan {<br>                                local_ts = <LOCAL_SUBNET><br>                                remote_ts = <LOCAL_SUBNET><br>                                mode = pass<br>                                start_action = trap<br>                        }<br>                }<br>        }<br>}<br>secrets {<br>        ike {<br>                secret = <PASS><br>        }<br>        xauth {<br>                secret = <PASS><br>        }<br>}<br><br>swanctl -l:<br>home: #1, ESTABLISHED, IKEv1, 918dd087d170153e:8b9da69955d37fc5<br>  local  '<LOCAL_ID>' @ 192.168.0.101[4500] [<LOCAL_VIRTUAL_IP>]<br>  remote '<REMOTE_IP>' @ <REMOTE_IP>[4500]<br>  AES_CBC-256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024<br>  established 6026s ago, rekeying in 7589s<br>  home: #2, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-256/HMAC_SHA1_96<br>    installed 2486s ago, rekeying in 877s, expires in 1474s<br>    in  c85aea35,  52214 bytes,   237 packets,    15s ago<br>    out f13cbd5e,  19363 bytes,   332 packets,    15s ago<br>    local  <LOCAL_VIRTUAL_IP>/32<br>    remote <a href="http://0.0.0.0/0">0.0.0.0/0</a><br><br>ip xfrm state:<br>src 192.168.0.101 dst <REMOTE_IP><br>    proto esp spi 0xf13cbd5e reqid 1 mode tunnel<br>    replay-window 32 flag af-unspec<br>    auth-trunc hmac(sha1) 0x188f0ce352e43226f8f363fd18bcc88e5a04b7db 96<br>    enc cbc(aes) 0x928a4ff50567fc6ecc65a3740d67208cb9492ec428c0ea60997e26c9ccbdd4ee<br>    encap type espinudp sport 4500 dport 4500 addr 0.0.0.0<br>    anti-replay context: seq 0x0, oseq 0x145, bitmap 0x00000000<br>src <REMOTE_IP> dst 192.168.0.101<br>    proto esp spi 0xc85aea35 reqid 1 mode tunnel<br>    replay-window 32 flag af-unspec<br>    auth-trunc hmac(sha1) 0x978c54b6651de45aa632d72e3c66d9831a40d19b 96<br>    enc cbc(aes) 0xaf25b1d34af7aaea213076ccdc785388463e6c690025e414d56ac8d918e83e85<br>    encap type espinudp sport 4500 dport 4500 addr 0.0.0.0<br>    anti-replay context: seq 0xe8, oseq 0x0, bitmap 0xffffffff<br><br>ip xfrm policy:<br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <LOCAL_VIRTUAL_IP>/32 <br>    dir fwd priority 2947 ptype main <br>    tmpl src <REMOTE_IP> dst 192.168.0.101<br>        proto esp reqid 1 mode tunnel<br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <LOCAL_VIRTUAL_IP>/32 <br>    dir in priority 2947 ptype main <br>    tmpl src <REMOTE_IP> dst 192.168.0.101<br>        proto esp reqid 1 mode tunnel<br>src <LOCAL_VIRTUAL_IP>/32 dst <a href="http://0.0.0.0/0">0.0.0.0/0</a> <br>    dir out priority 2947 ptype main <br>    tmpl src 192.168.0.101 dst <REMOTE_IP><br>        proto esp reqid 1 mode tunnel<br>src <LOCAL_SUBNET> dst <LOCAL_SUBNET> <br>    dir fwd priority 1347 ptype main <br>src <LOCAL_SUBNET> dst <LOCAL_SUBNET> <br>    dir in priority 1347 ptype main <br>src <LOCAL_SUBNET> dst <LOCAL_SUBNET> <br>    dir out priority 1347 ptype main <br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <a href="http://0.0.0.0/0">0.0.0.0/0</a> <br>    socket in priority 0 ptype main <br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <a href="http://0.0.0.0/0">0.0.0.0/0</a> <br>    socket out priority 0 ptype main <br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <a href="http://0.0.0.0/0">0.0.0.0/0</a> <br>    socket in priority 0 ptype main <br>src <a href="http://0.0.0.0/0">0.0.0.0/0</a> dst <a href="http://0.0.0.0/0">0.0.0.0/0</a> <br>    socket out priority 0 ptype main <br>src ::/0 dst ::/0 <br>    socket in priority 0 ptype main <br>src ::/0 dst ::/0 <br>    socket out priority 0 ptype main <br>src ::/0 dst ::/0 <br>    socket in priority 0 ptype main <br>src ::/0 dst ::/0 <br>    socket out priority 0 ptype main <br><br>ip addr:<br>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1<br>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br>    inet <a href="http://127.0.0.1/8">127.0.0.1/8</a> scope host lo<br>       valid_lft forever preferred_lft forever<br>2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000<br>    link/ether #:#:#:#:#:# brd ff:ff:ff:ff:ff:ff<br>3: wlan_cli: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000<br>    link/ether #:#:#:#:#:# brd ff:ff:ff:ff:ff:ff<br>    inet <a href="http://192.168.0.101/24">192.168.0.101/24</a> brd 192.168.0.255 scope global dynamic wlan_cli<br>       valid_lft 6103sec preferred_lft 6103sec<br>    inet <a href="http://192.168.178.203/32">192.168.178.203/32</a> scope global wlan_cli<br>       valid_lft forever preferred_lft forever<br>4: wlan_ap: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000<br>    link/ether #:#:#:#:#:# brd ff:ff:ff:ff:ff:ff<br>    inet <a href="http://192.168.100.1/24">192.168.100.1/24</a> brd 192.168.100.255 scope global wlan_ap<br>       valid_lft forever preferred_lft forever<br><br>iptables-save:<br># Generated by iptables-save v1.6.0 on Sat Jun 25 21:23:13 2016<br>*mangle<br>:PREROUTING ACCEPT [349421:284000115]<br>:INPUT ACCEPT [34643:18876322]<br>:FORWARD ACCEPT [313972:264962238]<br>:OUTPUT ACCEPT [22604:4130117]<br>:POSTROUTING ACCEPT [336871:269101909]<br>COMMIT<br># Completed on Sat Jun 25 21:23:13 2016<br># Generated by iptables-save v1.6.0 on Sat Jun 25 21:23:13 2016<br>*raw<br>:PREROUTING ACCEPT [349421:284000115]<br>:OUTPUT ACCEPT [22604:4130117]<br>COMMIT<br># Completed on Sat Jun 25 21:23:13 2016<br># Generated by iptables-save v1.6.0 on Sat Jun 25 21:23:13 2016<br>*filter<br>:INPUT ACCEPT [7759:1614766]<br>:FORWARD ACCEPT [152179:130984520]<br>:OUTPUT ACCEPT [4312:581363]<br>-A INPUT -d <LOCAL_VIRTUAL_IP>/32 -i wlan_cli -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT<br>-A FORWARD -d <LOCAL_VIRTUAL_IP>/32 -i wlan_cli -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT<br>-A FORWARD -s <LOCAL_VIRTUAL_IP>/32 -o wlan_cli -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT<br>-A OUTPUT -s <LOCAL_VIRTUAL_IP>/32 -o wlan_cli -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT<br>COMMIT<br># Completed on Sat Jun 25 21:23:13 2016<br># Generated by iptables-save v1.6.0 on Sat Jun 25 21:23:13 2016<br>*nat<br>:PREROUTING ACCEPT [2557:349662]<br>:INPUT ACCEPT [850:69600]<br>:OUTPUT ACCEPT [853:60041]<br>:POSTROUTING ACCEPT [14:2385]<br>-A POSTROUTING -o wlan_cli -m policy --dir out --pol ipsec -j ACCEPT<br>-A POSTROUTING -o wlan_cli -j MASQUERADE<br>COMMIT<br># Completed on Sat Jun 25 21:23:13 2016<br><br></div>I don't see any misconfigurations so far, but I'm pretty new to policy based routing.<br><br></div>Any ideas or suggestions what's wrong?<br><br></div>Regards,<br></div>Boris<br></div>