<div dir="ltr">I've got a local subnet with statically assigned address - <a href="http://10.65.112.0/22">10.65.112.0/22</a>. One of the devices is a linux box acting as a gateway with a PPP connection, it has a normal ethernet controller with address 10.65.112.69, and when the PPP connection is up it has an assigned address of 10.1.20.19.<div>
<br></div><div>Also on the local subnet is another machine (Windows as it happens), 10.65.112.174, with gateway set to the .69 machine.</div><div><br>Prior to integrating the VPN, I had some normal NAT going on so that the Windows box could communicate with the outside world, but using the "public" IP of 10.1.20.19. A fairly standard sort of rule:</div>
<div>iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE<br></div><div><br></div><div>This worked fine - I could ping other devices on the public net directly from the Windows box.</div><div><br></div>
<div>I've now got an IPSEC based VPN, with the following connection setup:</div><div><div><br></div><div>conn MYCONN</div><div><span class="" style="white-space:pre">      </span>left=%defaultroute</div><div><span class="" style="white-space:pre"> </span>leftsourceip=%config</div>
<div><span class="" style="white-space:pre">    </span>right=10.1.40.1</div><div><span class="" style="white-space:pre">    </span>rightsubnet=<a href="http://10.31.21.0/24">10.31.21.0/24</a></div><div><span class="" style="white-space:pre"> </span>auto=add</div>
</div><div><br></div><div>This VPN works fine and from the Linux gateway I can ping remote devices (10.31.21.XXX) without any problem. If I add in my NAT rule again though, everything breaks - I can't ping from the local machine or the Windows box. The packets go out on the PPP interface but without being encapsulated, whether they've been locally or remotely generated.</div>
<div><br></div><div>My understanding of the iptables NAT table is that it takes place before it gets to the xfrm lookup (<a href="http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg">http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg</a>), and so once the source has been rewritten to 10.1.20.19, it should get picked up by the vpn and encapsulated, but that is clearly not what's happening.</div>
<div><br></div><div>I've been banging my head against this for a little while now, so any help much appreciated!</div><div><br></div><div>Will</div></div>