<div dir="ltr"><div>Hello All,</div><div><br></div><div>I am setting up a vpn to one of our customer's networks. Due to a requirement on their end, we cannot have our traffic (appear to) come from a private ip address. I have been able to get a tunnel setup with our customer, but I am having an issue getting the NAT to work as needed. For testing purposes I have simulated the environment in AWS using 2 VPCs, and watching traffic using tcpdump or tshark, to see what the from ip address is. Here is a copy of the setup with different ip addresses.<br></div><div><br></div><div>    (Simulated Customer Side VPC - <a href="http://172.16.0.0/16">172.16.0.0/16</a>)</div><div>    Customer Test Server - 172.16.0.20</div><div>    AWS Hardware VPN - 1.1.1.1</div><div>    |</div><div>    |</div><div>    |</div><div>    (Internet)</div><div>    |</div><div>    |</div><div>    |</div><div>    (Our VPC - <a href="http://10.10.10.0/16">10.10.10.0/16</a>)</div><div>    OpenSwan VPN server - 2.2.2.2 and 10.10.10.10</div><div>    Internal Test Server - 10.10.10.20</div><div><br></div><div>The ipsec.conf file for OpenSwan....</div><div><br></div><div>    conn Tunnel1</div><div>      authby=secret</div><div>      auto=start</div><div>      left=%defaultroute</div><div>      leftid=2.2.2.2</div><div>      right=1.1.1.1</div><div>      type=tunnel</div><div>      ikelifetime=8h</div><div>      keylife=1h</div><div>      phase2alg=aes128-sha1;modp1024</div><div>      ike=aes128-sha1;modp1024</div><div>      auth=esp</div><div>      keyingtries=%forever</div><div>      keyexchange=ike</div><div>      leftsubnet=<a href="http://10.10.10.0/16">10.10.10.0/16</a></div><div>      rightsubnet=<a href="http://172.16.0.0/16">172.16.0.0/16</a></div><div>      dpddelay=10</div><div>      dpdtimeout=30</div><div>      dpdaction=restart_by_peer</div><div><br></div><div>and the secrets file looks like ....</div><div><br></div><div>    2.2.2.2 <a href="http://1.1.1.1">1.1.1.1</a>: PSK "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</div><div><br></div><div>I have also set the following values to in /etc/sysctl.conf</div><div><br></div><div>    net.ipv4.ip_forward = 1</div><div>    net.ipv4.conf.default.rp_filter = 0</div><div>    net.ipv4.conf.default.accept_source_route = 0</div><div><br></div><div>Doing this I can get the tunnel to come "up" and I can communicate between the test instances using the private ip addresses of the other tester (from both sides). This shows (for ping and ssh) that that the communication comes from the private ip address of the other test server. For example a ping from 10.10.10.20 to 172.16.0.20 shows (via tshark) the ping coming from 10.10.10.20.</div><div><br></div><div>In order to get the traffic to appear like it comes form the external IP address of the OpenSwan server, I added an ip tables entry to the OpenSwan instance.</div><div><br></div><div>    iptables -t nat -I POSTROUTING -s <a href="http://10.10.10.0/16">10.10.10.0/16</a> -d <a href="http://172.16.0.0/16">172.16.0.0/16</a> -o eth0 -j SNAT --to-source 2.2.2.2</div><div><br></div><div>Then when I ping from 10.10.10.20 to 172.16.0.20 the ping comes from 2.2.2.2. This is the behavior that I was hoping for, however when I try to ssh from 10.10.10.20 to 172.16.0.20 the traffic never gets there. A tshark on the Customer Test Server shows no ssh traffic coming in, from either 10.10.10.20 or 2.2.2.2, and a tcpdump on the OpenSwan server show the traffic as not getting NATed to 2.2.2.2 (it only shows packets for 10.10.10.20 -> <a href="http://172.16.0.20:22">172.16.0.20:22</a>).</div><div><br></div><div>I have tried many different configurations (struggling for several days) of setting the left, leftsubnet, leftsourceip, leftnexthop, as well as using SNAT and MASQUERADE, and other different iptables entries, with no luck getting the traffic to look as needed.</div><div><br></div><div>What is required for me to get incoming traffic in the customers network to look like it comes from an external ip address?. Any help is greatly appreciated. Thanks.</div><div><br></div><div>If you need additional tcpdump or tshark logs, I can provide those as well.</div><div><br></div><div>And FWIW, I do have the AWS route tables in the Customer Test VPC set so that 2.2.2.2 and <a href="http://10.10.10.0/16">10.10.10.0/16</a> traffic goes to the VPN Gateway, and the route tables in Our VPC has all <a href="http://172.16.0.0/16">172.16.0.0/16</a> traffic going to the ENI for the OpenSwan instance.</div><div><br></div><div>Thanks for any help,</div><div>-Joel</div></div>