I have multiple sites, all connected centrally to a corporate office over VPN. I can see the IP addresses of the remote hosts but the MAC gets stripped. Is there a way to configure the network so that the source IP and MAC get passed?
MAC addresses are only significant or seen on the layer-2 LAN where the host connects. Not all layer-2 protocols even use MAC addresses, and some use 48-bit MAC addresses, and some use the newer 64-bit MAC addresses.
Routers operate at layer-3, so they strip the layer-2 frames off the layer-3 packets so they can build new layer-2 frames for the new interface out which the packets will be forwarded.
I have been studying this very concept the past couple weeks and have conducted a few labs consisting of 4+ Cisco routers and 3 Cisco switches. When a client on your network is trying to send a packet to a client at another site, it will send an ARP request to the router since the destination is on a different network (assuming ARP tables arent populated). It will then forward the packet to the router (it's default gateway). The router will have a route set (or default gateway) and it will forward the packet through that route. At this point the L2 frame will be stripped, and the router will re-encapsulate the packet, but the source MAC address will be set to that of the routers WAN MAC address, but it will of course preserve the origin IP so responses can find their way back to the correct client. It will then forward the packet to the next router designated in the routing table. This process will continue until the destination client is reached.
Unless you want to deviate from the standard convention of internet routing protocols and re-program all your networking hardware and clients, I don't think you will be able to get around this.