Hi Alexis,

On 17/06/15 17:41, Alexis Huxley wrote:
> At
> https://openvpn.net/index.php/open-source/documentation/howto.html#scope
> it says:
>
>> Next, you must set up a route on the server-side LAN gateway to route
> the VPN client subnet ... to the OpenVPN server ...
>
> I was (possibly wrongly) imagining that there should be a nicer way to
> accomplish the intended result without having to tell the server-side
> LAN about the *tunnel* IPs in order that hosts there can reply to the
> client-side LAN: ideally, shouldn't server-side LAN hosts just need to
> know that to reach the client-side LAN they need to go via the server's
> interface on the server-side LAN?
the 'client subnet' is not the same thing as a "tunnel IP" . The 
server-side LAN does not need to know anything about tunnel IPs (in 
theory you can do without IP address on the tunnel interfaces).

The server-side LAN *does* need to know the IP range of the client-side 
LAN  (aka subnet) .
> To make the next bit easier to explain, here are some numbers:
>
> server-side LAN: 192.168.1.0/24
> client-side LAN: 192.168.0.0/24
> VPN server 'server' line: server 10.239.67.0 255.255.255.0
> server VPN address: 10.239.67.1
> client VPN address: 10.239.67.6
> client LAN address: 192.168.0.11
>
> My first step was just to ping in both directions: from the server-side
> LAN all worked fine, from the client-side LAN everything is fine but
> from the client itself it isn't. tcpdump told me why: the client sends
> packets with the source address set to its end of the *tunnel* (i.e.
> 10.239.67.6) and I have deliberately not told the server-side LAN about
> the tunnel's IP addresses.
>
> To fix this, I did SNAT on the server:
>
> iptables -t nat -A POSTROUTING -s 10.239.67.6 -j SNAT
> --to-source=192.168.0.11
>
> and this worked; now packets on the client, arriving on the server, have
> their source addresses changed from the client's tunnel NIC to the
> client's LAN NIC, so, when a server-side LAN host receives the packet
> then then it knows how to route its replies (because a route to the
> client-side LAN was added to its routing table at boot time).
>
> If I had only one client then I could just put this iptables call - with
> its hard-coded IP addresses - in the 'up' script, but I want more
> clients, so I need to do something a bit more flexible.
>
> However, in the 'up' script's command line args and in its environment,
> I don't see anything that tells the server what IP the *client* side of
> the tunnel is.
>
> So now to my question: is there any way for the server to determine the
> IP of the client's end of the tunnel? The env vars the 'up' script sees are:
>
> route_vpn_gateway=10.239.67.2
> daemon_log_redirect=0
> script_type=up
> proto_1=udp
> daemon=0
> route_network_1=192.168.0.0
> dev=tun0
> route_network_2=10.239.67.0
> remote_port_1=1194
> script_context=init
> ifconfig_local=10.239.67.1
> verb=3
> local_port_1=1194
> link_mtu=1541
> route_gateway_1=10.239.67.2
> tun_mtu=1500
> route_gateway_2=10.239.67.2
> route_netmask_1=255.255.255.0
> route_netmask_2=255.255.255.0
> route_net_gateway=192.168.1.1
> ifconfig_remote=10.239.67.2
> daemon_pid=6240
> config=server.conf
> PWD=/etc/openvpn
>
> Note that the 10.239.67.6 is not in that list.
>
> A pushed ifconfig *is* known within a client-connect script (says the
> man page), but before I start writing one of those, I thought it made
> sense to ask here for a simpler solution. Thanks!
>
only when a client connects will the client-side tunnel IP be known ; 
thus you'd need to write a client-connect script to get at it. However, 
as I explained above, you don't need it at all to achieve what you are 
outlining.

HTH,

JJK


------------------------------------------------------------------------------
_______________________________________________
Openvpn-users mailing list
Openvpn-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-users

Reply via email to