[strongSwan] Help: recurring network loss between hosts
teq1uila-strongswan at yahoo.com
teq1uila-strongswan at yahoo.com
Thu May 9 10:57:22 CEST 2019
Hello,
I'm using strongswan for a couple of years now, and I'm facing a recurring strange behavior, very difficult to track as I'm not that fluent in IPSEC configuration.
The network often goes down between hosts, without any reason, and not always in both ways (host1=>host2 may stopped working, with host2=>host1 still working).
The only solution I found is to restart strongswan on all servers, but I'm sure this is a very bad solution :)
If someone can have a rapid look at the following in case something is so evident I should have noticed it...
I'm also interresting in a way to analyze the situation, if it helps.
My goal is to have specific hosts communicating together with IPSEC encryption.
Let say with 3 hosts host1, host2 and host3:
- host1 <=> host2 encrypted
- host1 <=> host3 encrypted
- host2 <=> host3 encrypted
All hosts have 2 network cards, one connected to the network (192.*), and on on a private network (10.*)
NOTE: due to a required compatbility with Windows, I'm still using IKEv1 and not v2.
To achieve this, I've just installed strongswan (strongswan-5.6.1-2.el7.x86_64) on all servers, generate a certificate for each host (from a common CA), and configured ipsec.conf and ipsec.secrets file.
All configuration files are the the same on all 3 servers, changing only the according IP and host names, of course.
- /etc/strongswan/ipsec.d/cacerts/ca.crt : the CA
- /etc/strongswan/ipsec.d/certs/server.crt : the host public key
- /etc/strongswan/ipsec.d/private/server.key : the host private key
- /etc/strongswan/ipsec.secrets
: RSA server.key
- /etc/strongswan/ipsec.conf (for host1)
config setup
uniqueids = no
conn "AutoConfig Enc host1"
auto=ignore
type=transport
keyexchange=ikev1
authby=rsasig
ike=aes256-sha256-modp2048!
esp=aes256gcm128-aes256gmac-modp2048!
ikelifetime=8h
lifetime=1h
lifebytes=10000000000
leftcert=server-host1.crt
leftid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host1, E=user at host.com"
conn "AutoConfig Enc host1-1"
auto=ignore
type=transport
keyexchange=ikev1
authby=rsasig
ike=aes256-sha256-modp2048!
esp=aes256gcm128-aes256gmac-modp2048!
ikelifetime=8h
lifetime=1h
lifebytes=10000000000
leftcert=server-host1-1.crt
leftid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host1-1, E=user at host.com"
conn "AutoConfig tcp host1:* <-> host2:*"
also="AutoConfig Enc host1"
auto=route
left=190.0.0.1
leftsubnet=190.0.0.1[tcp/%any]
right=190.0.0.2
rightsubnet=190.0.0.2[tcp/%any]
rightid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host2, E=user at host.com"
conn "AutoConfig tcp host1:* <-> host3:*"
also="AutoConfig Enc host1"
auto=route
left=190.0.0.1
leftsubnet=190.0.0.1[tcp/%any]
right=190.0.0.3
rightsubnet=190.0.0.3[tcp/%any]
rightid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host3, E=user at host.com"
conn "AutoConfig tcp host1-1:* <-> host2-1:*"
also="AutoConfig Enc host1-1"
auto=route
left=10.0.0.1
leftsubnet=10.0.0.1[tcp/%any]
right=10.0.0.2
rightsubnet=10.0.0.2[tcp/%any]
rightid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host2-1, E=user at host.com"
conn "AutoConfig tcp host1-1:* <-> host3-1:*"
also="AutoConfig Enc host1-1"
auto=route
left=10.0.0.1
leftsubnet=10.0.0.1[tcp/%any]
right=10.0.0.3
rightsubnet=10.0.0.3[tcp/%any]
rightid="C=fr, ST=fr, L=fr, O=fr, OU=fr, CN=host3-1, E=user at host.com"
#iptables -S (for host1)
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -s 190.0.0.2/32 -d 190.0.0.1/32 -p tcp -m state --state NEW -m tcp -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -s 190.0.0.3/32 -d 190.0.0.1/32 -p tcp -m state --state NEW -m tcp -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -s 10.0.0.2/32 -d 10.0.0.1/32 -p tcp -m state --state NEW -m tcp -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -s 10.0.0.3/32 -d 10.0.0.1/32 -p tcp -m state --state NEW -m tcp -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Many thanks,
Christian
More information about the Users
mailing list