/etc/strongswan/ipsec.confLinux는 IPSec VPN을  위해서 기본적으로 OpenSwan 또는 StrongSwan 패키지를 지원한다.

Windows도 RRAS를 통해 자체적으로 지원한다. 

http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/NetworkAdminGuide/customer-gateway-windows-2012.html

http://techgenix.com/configure-vpn-windows-server-2012-r2/


아무래도 Linux가 설정이나 트러블 슈팅하기가 더 쉽다. Linux 머신만 있으면 VPN장비 부럽지 않다.

고급 설정이 좀 더 가능한 StrongSwan을 사용해보자. (물론 여기서 고급기능을 쓰지는 않지만...)


사실 AWS, Azure, Softlayer, Alibaba 아무관계가 없다. 모두 IPSec VPN 서비스가 있지만, 가끔 이렇게 직접 구축이 필요할 때가 있다.

다만 Softlayer는 Router Roll은 vyatta에 한정되어 있으므로, 서버에 VPN을 구축할 경우

모든 서버의 라우팅에 VPN서버를 별도 추가 해주어야 하는 불편함은 있다. (하지만, 그냥 하면 되므로 불편한거지 어려운 부분은 아니다)

vyatta을 쓰면 vyatta에서 모두 지원하므로 이렇게 쓸일이 없지만, vyatta는 비싸므로 서버만 쓰는 경우를 예로 든다.


CentOS7 기준으로 설명한다. 

설정 편의를 위해 PSK(PreSharedKey)로 설정한다. 네트워크 정보는 아래를 예시로 했다.

 

 VPN 서버 Public IP

 Network 사설 대역

 A쪽 Network

 169.11.22.33

 10.100.50.0/24

 B쪽 Network

 211.66.77.88

 192.168.20.0/24


일단 ip_forward를 활성화한다. 그리고 strongswan을 설치 및 자동 실행 설정을 한다.

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/ip_forward.conf
sysctl -p /etc/sysctl.d/ip_forward.conf
cat /proc/sys/net/ipv4/ip_forward

yum install -y epel-release
yum install -y strongswan

systemctl enable strongswan
systemctl start strongswan


설정은 ipsec.conf 만 해주면 되고, PSK는 ipsec.secret에 적어주면 끝이다.

아래 설정은 A쪽 설정이다, B쪽은 left와 right쪽 정보만 반대로 해주면 된다.

/etc/strongswan/ipsec.conf

# ipsec.conf
config setup
  strictcrlpolicy=no
  uniqueids=no
  charondebug="cfg 2, ike 2, knl 2"
#  charondebug="dmn 2, mgr 2, ike 2, chd 2, job 2, cfg 2, knl 2, net 2, enc 2, lib 2"

conn %default
  ikelifetime=14400
  keylife=3600
  keyexchange=ikev2

conn sample
  authby=secret
  auto=start
  type=tunnel
  leftauth=psk
  rightauth=psk
  left=169.11.22.33
  right=211.66.77.88
  leftsubnet=10.100.50.0/24
  rightsubnet=192.168.20.0/24
  ike=aes256-sha256-modp2048
  esp=aes256-sha256-modp2048


/etc/strongswan/ipsec.secret

# ipsec.secret
169.11.22.33 : PSK "Cloud1004@Test"
211.66.77.88 : PSK "Cloud1004@Test"


양단 설정이 다 되었으면 재 시작 하고 터널 상태를 확인한다.

strongswan restart
strongswan statusall



잘 안될경우 로그를 확인한다.  로그 레벨과 파트는 ipsec.conf에서 charondebug 부분을 참조 해서 변경한다. 경우에 따라 tcpdump 를 볼 필요성도 있다.

tail -f /var/log/message /var/log/secure

AWS/Alibaba는  라우팅 설정에서 상대편 대역은 해당 서버로 가게 끔 추가 해 준다.

IBM Cloud는 vyatta를  안쓰면 라우팅 설정을 못 바꾸므로 연결되는 모든 서버에서 각각 라우팅을 추가 해주어야 한다.
(VPN 장비의 사설 IP가 10.100.50.100 이라고 할 때)

리부팅 되도 유지되도록 설정한다.

Windwos의 경우 route add 명령에 -p 옵션만 주면 영구 설정이 되며 재부팅시 유지된다.
실제 다음 레지스트리에 기록된다.
HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\TCPIP\PARAMETERS\PERSISTENTROUTES

route -p add 10.100.50.0 MASK 255.255.255.0 10.100.50.100 METRIC 1
route print

Linux는 /etc/sysconfig/network-scripts/route-eth0 넣고 
systemctl restart network 해주면 된다.

echo "10.100.50.0/24 via 10.100.50.100" >> /etc/sysconfig/network-scripts/route-eth0
systemctl restart network
ip route


단순히 테스트 할 때는 아래 처럼 하면 된다. 

Windows

route add 10.100.50.0 MASK 255.255.255.0 10.100.50.100 METRIC 1
route print

Linux

ip route add 10.100.50.0/24 via 10.100.50.100
ip route


'OS > Linux' 카테고리의 다른 글

firewalld 설정  (0) 2018.11.04
SAMBA 설치 at CentOS 7  (0) 2018.08.29
vimdiff 사용법  (0) 2018.04.21
Linux 에서 IP 추출  (0) 2018.04.21
랜덤 내용 특정 사이즈 더미 파일 만들기  (0) 2018.02.21

+ Recent posts