On Jun 2, 2018, at 9:45 AM, J Vans <[email protected]> wrote:

>> > On Jun 2, 2018, at 6:03 AM, Stuart Henderson <[email protected]> wrote:
>> > > > On 2018-06-01, J Vans <[email protected]> wrote:
>> > > I am trying to route all of my ipv4 traffic through a particular server 
>> > > > > using OpenIKED. I have it successfully set up so that each client 
>> > > can > > connect, and the traffic passes through correctly, but it only 
>> > > works for > > one client at a time. If Client A is connected by itself 
>> > > things work > > just fine, but once I connect Client B, Client B works 
>> > > and client A no > > longer is able to pass any traffic out. I restart 
>> > > IKED on Client A, and > > Client B loses it's connection.
>> > > > > I searched through misc and didn't find anyone talking about exactly 
>> > > > > > > what I was trying to do, and a web search turned up one useful 
>> > > > > result > > that claims using ikev2 I cannot do this without ipv6. > 
>> > > > > > 
>> > > > > https://serverfault.com/questions/775238/two-road-warrior-clients-behind-the-same-nat-device-ikev2-strongswan-libreswa
>> > >  The claim that nat can't differentiate between the traffic of each > > 
>> > > client makes sense to me, but there is a lot I do not know.
>> > > The claim in that reply about needing IPv6 and NAT not working is
>> > nonsense, the port numbers are different. This is exactly what NAT-T
>> > fixes.
>> > > > I know that traffic can be tagged by IKED and have tried routing by 
>> > > > tag > > in pf to no avail. However, it is possible I have not done 
>> > > > this correctly.
>> > > > > My questions are:
>> > > > > 1. If I want multiple "road warrior" clients behind nat in IKED do I 
>> > > > > > > need to implement ipv6?
>> > > > > 2. Is there a different way to accomplish this besides ipv6?
>> > > > > > > > > I don't have a setup handy to test at the moment but I don't 
>> > > > > > > > > think > there's anything special to do here. If you show 
>> > > > > > > > > your config (iked,
>> > pf, outline of network setup) maybe somebody will notice something?
>> > 
> 
> Thank you, I was after a "possible" or "not possible", and it sounds like what
> I want to do is possible. Below are my the test configs.
> 
>> I had a similar problem when trying to assign specific IP addresses based on 
>> asn1 id.
> 
> I have this problem assigned ip addresses or no.
> 
> 
> CONFIGS
> 
> Basically I have a vpn server on the public internet, and I want to be able to
> be anywhere and route my traffic through that server.
> 
> CLIENT A ---\
>              >>>>> VPN  >>>>> INTERNET
> CLIENT B ---/
> 
> I am posting a less complicated setup, it is the configs from
> http://puffysecurity.com/wiki/openikedoffshore.html
> 
> This setup works fine, but only for one client at a time. I can ping out on
> one client, and as soon as I start iked on the other, the pinging stops.
> 
> In my more complicated setup I am using unbound for DNS and assigning static 
> ip
> addresses to each peer, but I am having this problem both ways so maybe start
> simple and work from there.
> 
> 
> SERVER CONFIGS
> 
> iked.conf
> 
>    ikev2 passive ipcomp esp \
>        from 0.0.0.0/0 to 10.0.0.0/8 \
>        from 0.0.0.0/0 to 172.16.0.0/12 \
>        from 0.0.0.0/0 to 192.168.0.0/16 \
>        local $vpn_server_ip peer any \
>        srcid $vpn_server_ip \
>        tag IKED
> 
> 
> pf.conf
> 
>    set reassemble yes
>    set block-policy return
>    set loginterface egress
>    set skip on { lo, enc }
> 
>    match in all scrub (no-df random-id max-mss 1440)
> 
>    table <bruteforce> persist
> 
>    block in log
>    block in quick from urpf-failed label uRPF
>    block quick from <bruteforce>
> 
>    pass out all modulate state
> 
>    pass in on egress proto udp from any to any port { isakmp, ipsec-nat-t }
>    pass in on egress proto { ah, esp }
>    pass out on egress \
>        from { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } \
>        to { ! 10.0.0.0/8, ! 172.16.0.0/12, ! 192.168.0.0/16 } \
>        nat-to (egress)
> 
>    pass in quick inet proto icmp icmp-type { echoreq, unreach }
> 
>    pass in quick proto tcp from any \
>        to (egress) port ssh \
>        flags S/SA modulate state \
>        (max-src-conn 15, max-src-conn-rate 15/5, overload <bruteforce> flush 
> global)
> 
> 
> sysctl.conf
> 
>    net.inet.ip.forwarding=1
>    net.inet.ipcomp.enable=1
> 
> 
> 
> CLIENT CONFIGS (A and B are identical except $client_hostname)
> 
> iked.conf
> 
>    ikev2 active ipcomp esp \
>        from 10.0.0.0/8 to 0.0.0.0/0 \
>        from 172.16.0.0/12 to 0.0.0.0/0 \
>        from 192.168.0.0/16 to 0.0.0.0/0 \
>        peer $vpn_server_ip \
>        srcid $client_hostname \
>        tag IKED
> 
> 
> pf.conf
> 
>    set reassemble yes
>    set block-policy return
>    set loginterface egress
>    set skip on { lo, enc }
> 
>    match in all scrub (no-df random-id max-mss 1440)
> 
>    table <bruteforce> persist
> 
>    block in log
>    block in quick from urpf-failed label uRPF
>    block quick from <bruteforce>
> 
>    pass out all modulate state
> 
>    pass in quick inet proto icmp icmp-type { echoreq, unreach }
> 
>    pass in quick proto tcp from any \
>        to (egress) port ssh \
>        flags S/SA modulate state \
>        (max-src-conn 15, max-src-conn-rate 15/5, overload <bruteforce> flush 
> global)
> 
> 
> sysctl.conf
> 
>    net.inet.ip.forwarding=1
>    net.inet.ipcomp.enable=1
> 

On the server Iked.conf try adding

config address x.x.x.x/24 \
config netmask 255.255.255.0

Or whatever address space you like. This address space should be a virtual pool 
that’s only used for the vpn. At least that’s the only way I’ve used it. 

Reply via email to