안녕하세요
회사 고객님이 죽어도 ikev2로 VPN 구성해야 한다고해서
생전 첨 StrongSwan으로 구성해봤는데...
고객측에서의 패킷은 오는데 제가 관리하는 서버에서 던지는 패킷이 전혀 나가질 않습니다.
CentOS 6.7 에 Strongswan을 yum 으로 설치했고,
현재 구성은
172.16.30.1(고객측 private IP) -> 211.xxx.xxx.149(cisco router) -> ikev2 터널(인터넷) -> 서버(public ip) -> 10.10.10.1 (서버 private IP)
이런식인데...
고객측에서 10.10.10.1 로 ping을 던지면 잘 나가는데
서버 측에서 ping을 던지면 나가지를 않습니다.
다만 고객측에서 패킷이 넘어온 순간은 ping이 나갑니다...;
(그 때문에 NAT table 문제인것 같다는 생각도 듭니다만... 어찌해야할지를 모르겠습니다.)
traceroute 해봤더니, 서버에서 보내는 ping은 vpn 터널을 아에 타질 않더군요...
라우팅 경로 문제라서 생각되서 해결을 위해 찾아봤는데
# ip rule show
0: from all lookup local
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
# ip route show table 220
172.16.30.0/24 via 133.xxx.xxx.1 dev eth0 proto static src 10.10.10.1
어째서인지 고객측 IP인 211.xxx.xxx.149 가 아니라 133.xxx.xxx1 로 나오고 있습니다.
strongswan 자체를 yum 으로 설치해서 그런지 status 를 보려고 해도
# /etc/init.d/strongswan status
starter (pid 17063) is running...
정도로만 나오는지라 제대로 연결은 된건지 뭔지 감이 잡히질 않습니다...;;
IPTABLE 룰은 아래와 같이 추가해뒀습니다.
iptables -A INPUT -s 10.10.10.0/24 -j ACCEPT
iptables -A INPUT -s 172.16.30.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.10.10.0/25 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.30.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -d 172.16.30.0/24 -j MASQUERADE
iptables -A INPUT -i eth0 -p esp -j ACCEPT
iptables -A INPUT -i eth0 -p ah -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m udp --sport 500 --dport 500 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m udp --sport 4500 --dport 4500 -j ACCEPT
iptables -A OUTPUT -o eth0 -p esp -j ACCEPT
iptables -A OUTPUT -o eth0 -p ah -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m udp --sport 500 --dport 500 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m udp --sport 4500 --dport 4500 -j ACCEPT
iptables -A FORWARD -s 10.10.10.1 -d 172.16.30.0/24 -o eth0 -m policy --dir out --pol ipsec --proto esp -j ACCEPT
iptables -A FORWARD -s 172.16.30.0/24 -d 10.10.10.1 -o eth0 -m policy --dir in --pol ipsec -j ACCEPT
iptables -A FORWARD -s 10.10.10.1 -d 172.16.30.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -A FORWARD -d 172.16.30.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
제가 지금 거의 뭐 패닉상태라
혹시 strongswan 써보신 분 있으시면 도움 부탁드립니다.
읽어주셔서 감사합니다.
혹시, 중간에 NAT 되어야 하는 구간이 있나요.
(양쪽 configuration 도 위험하지 않은 선에서 볼 수 있을까요)
고객측 config는 고객측에서 설정한거라 잘은 모릅니다. (애당초 잘 몰라서요 ^^;)
제가 설정한 서버는 이렇습니다.
#ipsec.conf
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn %default
ikelifetime=1440m
keylife=60m
rekeymargin=30m
keyingtries=1
keyexchange=ikev2
authby=secret
conn cococo01
left=133.xxx.xxx.113
leftsubnet=10.10.10.1/32
leftid=133.xxx.xx.113
leftfirewall=yes
leftauth=secret
right=211.xxx.xxx.149
rightsubnet=172.16.30.0/24
rightid=211.xxx.xxx.149
rightauth=secret
auto=add
ike=aes256-sha256-modp1536
esp=aes256-sha256
keyexchange=ikev2
mobike=no # 추가설정1
type=tunnel # 추가설정2
이렇게 됩니다.
서버측은 가상머신에 (conoha vps) site-to-site 를 위해 private ip 를 심었습니다.
다만 이 private ip는 그냥 심은게 아니라, openvpn을 구축해서 그쪽 IP를 사용하고 있습니다.
(이쪽 VPN 네트워크랑 저쪽을 연동할 계획도 있습니다.)
아마 이 때문에 NAT가 필요한 것 같습니다.
차라리 이 OPENVPN을 폐기하고 eth0에 private ip를 심는것이 나을런지요?
가상머신쪽 설명서를 보니, 로컬네트워크를 위해서는 아에 인터페이스를 추가하라고 되어 있는지라...
모쪼록 조언 부탁드립니다.
감사합니다.
추가 ::
charon.log 에는 아래와 같은 부분이 있습니다.
Jan 26 09:51:40 15[KNL] <cococo01|1> using 133.xxx.xxx.1 as nexthop to reach 211.xxx.xxx.149/32
이걸 봐서는 라우팅이 잘못된 것도 아닌듯 한데... ㅡㅜ
추가 2::
tun0 인터페이스를 삭제하고
eth1 를 추가해서 (가상머신 NIC 인터페이스) 동일한 IP (10.10.10.1)를 주니 움직입니다...
뭔가 허망하네요 ㅠ_ㅠ
감사합니다.