<div dir="ltr"><div>Hi everyone,</div><div><br></div><div>I am testing this scenario:</div><div><br></div><div>  client       server running strongwan</div><div>(59.1.2.3)-------(eth0: 128.4.5.6)          nameserver</div><div>                 (br0: 192.168.4.1)-------(192.168.4.70)</div><div><br></div><div>I have a transport mode connection set up between client and server, which is working fine.</div><div><br></div><div>I'm trying to offer DNS (and some other services) to the client as if it/they were on the server by adding a port forward to the nameserver (you can see the rules below). This also all works fine unless I try to use the connmark module by adding the "mark=%unique" line to ipsec.conf.</div><div><br></div><div>Unfortunately I have many clients behind the same NAT IP, so connmark is essential. I'm also unable to change to tunnel mode on the client side.</div><div><br></div><div>With connmark enabled, the DNS reply goes out in the clear I assume because the connection isn't marked. Here are the packets seen from the server:</div><div><br></div><div><div>$ sudo tcpdump -i eth0 -n not port 22</div><div>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode</div><div>listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes</div><div>01:32:05.900835 IP 59.1.2.3.63606 > 128.4.5.6.4500: UDP-encap: ESP(spi=0xc842f7db,seq=0x1), length 100</div><div>01:32:05.902598 IP 128.4.5.6.53 > 59.1.2.3.63570: 5* 1/0/0 A 192.168.4.70 (55)</div><div><br></div><div>$ sudo tcpdump -i br0 -n</div><div>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode</div><div>listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes</div><div>01:31:29.852824 IP 59.1.2.3.63568 > 192.168.4.70.53: 3+ A? <a href="http://internal.host.name">internal.host.name</a>. (39)<br></div><div>01:31:29.854755 IP 192.168.4.70.53 > 59.1.2.3.63568: 3* 1/0/0 A 192.168.4.70 (55)</div></div><div><br></div><div>With connmark disabled you only see UDP encapsulated ESP traffic on eth0, no reply in the clear.</div><div><br></div><div>Has anyone got any ideas of how this traffic could be correctly marked so it goes out the right SA?</div><div><br></div><div>Here is some relevant info:</div><div><br></div><div><div>$ cat /etc/ipsec.conf</div><div>config setup</div><div>      uniqueids = no</div><div><br></div><div>conn %default</div><div>      leftfirewall=yes</div><div><br></div><div>conn test</div><div>      auto=add</div><div>      mark=%unique</div><div>      type=transport</div><div>      left=128.199.94.245</div><div>      leftcert=peerCert.der</div><div>      right=%any</div><div>      rightid="C=CH, O=strongSwan, CN=test"</div></div><div><br></div><div>$ sudo iptables -L -n -t mangle -v</div><div>Chain PREROUTING (policy ACCEPT 13 packets, 1064 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>    2   256 MARK       udp  --  *      *       59.1.2.3             128.4.5.6            udp spt:63606 dpt:4500 MARK set 0x9</div><div><br></div><div>Chain INPUT (policy ACCEPT 9 packets, 780 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>    0     0 CONNMARK   all  --  *      *       59.1.2.3             128.4.5.6            policy match dir in pol ipsec spi 0xf1a6d7c2 CONNMARK set 0x9</div><div><br></div><div>Chain FORWARD (policy ACCEPT 4 packets, 284 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div><br></div><div>Chain OUTPUT (policy ACCEPT 4 packets, 352 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>    0     0 CONNMARK   all  --  *      *       128.4.5.6            59.1.2.3             mark match 0x0 CONNMARK restore</div><div><br></div><div>Chain POSTROUTING (policy ACCEPT 8 packets, 636 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div><br></div><div>$ sudo iptables -L -n -t nat -v</div><div>Chain PREROUTING (policy ACCEPT 466 packets, 54764 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>   16  1172 DNAT       udp  --  eth0   *       <a href="http://0.0.0.0/0">0.0.0.0/0</a>            128.4.5.6            udp dpt:53 policy match dir in pol ipsec to:192.168.4.70</div><div><br></div><div>Chain INPUT (policy ACCEPT 1 packets, 340 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div><br></div><div>Chain OUTPUT (policy ACCEPT 4 packets, 304 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div><br></div><div>Chain POSTROUTING (policy ACCEPT 16 packets, 1172 bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>   76  5242 MASQUERADE  all  --  *      eth0    <a href="http://0.0.0.0/0">0.0.0.0/0</a>            <a href="http://0.0.0.0/0">0.0.0.0/0</a></div><div><br></div><div>Cheers</div></div>