(Real information to follow summary)

$ uname -a
OpenBSD hivpn3<snip> 4.0 GENERIC.MP#967 amd64

Gateway: 2 IPsec gateways running OpenBSD 4.0 using carp on the public interface (fail-over w/ preempt), sasyncd, and pfsync.

Clients: "Road-warrior" type clients (Mac OS X using the "VPN Tracker" software bu equinux) who need access to an internal class C network. The clients are configured to authenticate using x509 certs and use "mode config" for ip addr assignment.

On the one hand, everything works amazingly well. Phases 1 and 2 complete successfully and the clients are assigned the proper IP address. From the gateway I can ping the remote client and ssh into it. The client can do the same for the gateway.

I am experiencing an issue that none of the clients can talk to any other machines on the private network. tcpdump-ing the gateway's enc0 shows all the packets arriving from the mode-config assigned addresses. No response packets are returned over the tunnel. tcpdump-ing the bge1 (interface to the internal net) shows the packets leaving on their way to the right host. It appears that no arp requests are being answered by the remote client (or perhaps by proxy the gateway?, see output below).

Disabling mode-config gives the same results.

How is this supposed to work? It seems like all documentation on this subject ignores packet routing nuances entirely.

Perhaps if I assign remote clients addresses in a different address space and force the target network to use the gw box as the known route to that network? I haven't seen this scenario in any of the documentation (or google hits). Most users seem to experience that "this just works".

I reduced the test scenario to ease troubleshooting to a single gateway (no carp, sasyncd or pfsync) and I am experiencing the same problem.

Things that I know:

-Packet forwarding is enabled (net.inet.ip.forwarding=1)

-Gateway's routes (.21 is gateway, .100 is a server on the internal, bge1 is the correct default route for the 192.168.3/24:

192.168.3/24  link#2             UC          2        0      -   bge1
192.168.3.21  link#2             UHLc        1     1257      -   bge1
192.168.3.100 00:a0:d1:e4:f7:85  UHLc        0      824      -   bge1

-tcpdump enc0 (on gateway during an attempt to ping server .10 from a remote client):

10:40:24.792241 (authentic,confidential): SPI 0xaab2bb0f: 192.168.3.201 > 192.168.3.100: icmp: echo request (encap)

-tcpdump bge1 (interface associated with internal .3/24 net on gw):

10:42:42.820051 192.168.3.201 > 192.168.3.100: icmp: echo request
10:42:42.825013 arp who-has 192.168.3.201 tell 192.168.3.100
(no arp response from client or gw)

-netstat -rnf encap
Routing tables

Encap:
Source Port Destination Port Proto SA(Address/Proto/Type/Direction) 192.168.3.201/32 0 192.168.3/24 0 0 150.135.23.12/esp/use/in 192.168.3/24 0 192.168.3.201/32 0 0 150.135.23.12/esp/require/out

-ipsecctl -s all
flow esp in from 192.168.3.201 to 192.168.3.0/24 peer 150.135.23.12 srcid <ext. if ip>/32 dstid [EMAIL PROTECTED] type use flow esp out from 192.168.3.0/24 to 192.168.3.201 peer 150.135.23.12 srcid <ext. if ip>/32 dstid [EMAIL PROTECTED] type require


-isakmpd.conf (shouldn't matter since remote hosts seem to make it through keying, but for reference):

# cat /etc/isakmpd/isakmpd.conf
[General]
Listen-on=              <snip, was ip addr of external interface>
Policy-file=            /etc/isakmpd/isakmpd.policy

[X509-Certificates]
Ca-directory=           /etc/isakmpd/ca/
Cert-directory=         /etc/isakmpd/certs/
Private-key=            /etc/isakmpd/priv-key.pem

[Phase 1]
Default=                Default-peer

[Phase 2]
Passive-connections=    Default-connection

[Default-peer]
Phase=                  1


[Default-connection]
Configuration=          Default-ipsec-config
ISAKMP-peer=            Default-peer
Phase=                  2
Local-ID=               Local-net
Remote-ID=              Default-remote-ID

[Default-ipsec-config]
EXCHANGE_TYPE=          QUICK_MODE
Suites=                 QM-ESP-AES-SHA-PFS-SUITE

[Local-net]
ID-type=                IPV4_ADDR_SUBNET
Network=                192.168.3.0
Netmask=                255.255.255.0

[Default-remote-ID]
ID-type=                IPV4_ADDR
Address=                0.0.0.0

# Client Mode-Config Section
[ufqdn/[EMAIL PROTECTED]
Address=                192.168.3.201
Netmask=                255.255.255.0



--
Shawn Nock
Systems Programmer, Senior
CCIT; University of Arizona
nock 'at' arizona 'dot' edu

Reply via email to