Long stroy to short
vyos에서 site-to-site ipsec vpn을 통신사의 공인 IP와 공인 IP간에 구축하기 위해서는 Vyos 1.5 버전이후부터 가능하다.
KT는 일단 공인 IP로 주므로 구축이 제일 용이하며 SKT는 케바케, LG U+는 공유기에서 사설 IP로 주므로 구축이 어렵다.
Let’s make a long story
site to site vpn은 policy-based, route-based, gre over ipsec을 적용할 수 있다. 처음 컨셉은 가정집과 가정집 같의 site to site vpn 구축을 목표로 하였는데 이것이 비극의 시작점이었다.
필자가 적용해 해본 것은 VTI를 이용한 route-based vpn 인데 dynamic FQDN에서는 domain name을 적용할 수 없는 문제점이 있다.
site to site vpn은 원래 고정 IP로 된 두개 또는 그 이상의 IP 간의 통신으로 동작을 기준으로 한 방식이다. 만약에 한 site가 변동 IP로 구성되는 경우 주소가 도중에 바뀌게 되므로 문제가 발생하게 된다. 예를 들자면 택배기사가 물건을 배달하려는데 매번 주소가 바뀌는 골때리는 현상이 발생하는 것이다. 이렇게 접속하려는 site가 변동 IP인 경우 dynamic site라고 한다. dynamic site인 경우 발신자와 수신자간에 주소지가 변경되는 경우 서로 그 위치를 알아야하는 문제점을 해결해야한다.
site의 위치를 지정하는 방법은 111.111.111.111 와 같이 IP 주소 방식과 aaa.bbb.ccc.ddd 로 표기하는 FQDN (Fully Qualified Domain Name) 방식이 존재한다.
대다수의 라우터 S/W는 변동 IP를 확인하기 위하여 DDNS (Dynamic DNS ) 를 채택한다.
DDNS 서비스의 경우 유료이나 일부 서비스는 무료도 존재한다. 무료인 서비스는 한 달에 한 번 로그인을 해야만 한다던가하는 불편함이 존재한다.
필자는 No-ip를 유료로 사용하다가 가격을 올린다는 공지에 AWS의 Route53으로 갈아탔었다.
vyos 또는 edgeos 에서는 vpn 설정에서 site를 지정할 때 IP 주소 방식과 FQDN 방식 모두 허용이 되지 않는다.
실제 실행을 해보면 FQDN 방식에서는 다음과 같이 오류 문구를 출력하는데
set vpn ipsec site-to-site peer {FQDN} local-address {FQDN}
commit

vyos에서는
IP 주소 방식만을 허용하는 것을 알 수 있다.
다시 돌아와사 peer를 지정하는 문법을 살펴보자 IPv4/v6 의 고정 IP 및 Hostname을 지정할 수 있다.

peer를 domain 이름으로 지정한다면 다음에 중요한 것은 route 기반 또는 정책기반 (Policy-Based)를 결정해야한다. 두 방식의 차이는 자세히 설명되어있다. [1]
VTI 방식이 사용해보니 복잡하게 따져볼 필요가 없어서 제일 간편했었다. 하지만…
VYOS에서는 FQDN 방식에서는 VTI를 지원하지 않는다!!!!
정확하게 말하면 아직 해당기능이 구현되지 않았다.여기에는 정말 오래된 히스토리가 있는데 T440 이라는 티켓이다. https://vyos.dev/T440
2017년에 오픈되었는데 이 글을 쓰는 2023년까지도 채택이 되지 않았다.

따라서 Policybaed vpn으로 구성하고 추후에 VTI 가 정식으로 출시된다면 시험해보고 반영하기로 하겠다.
dynamic ip인 경우에는
edgeos에서는 local-address를 필요로하지 않고 대신 dhcp-interface를 사용한다.
vyos에서는
authentication id를 사용할 경우에는 local-address 0.0.0.0 으로 설정이 불가하다.

여기서 총체적인 난관에 빠졌는데 테스트로 사용하는 LTE 모뎀의 경우 IP가 사설 IP로 할당되었다. 모뎀의 내부를 봐도 설정할 수 있는 부분이 거의 없었는데 KT의 경우 공인 IP를 발부해주지만 LG의 경우 nat 뒤에서 설정하려면 policy가 아닌 vti 인터페이스를 이용하여 구성이 가능하다.
vpn nat-wtworks
nat-networks 하위의 allowed-network는 외부 IP에서 VPN을 접속할 경우 NAT에 도달하는 것이 허용되는 IP를 의미한다. 처음에는 거꾸로 생각해서 내부 IP 영역을 기입하여서 VPN 접속이 안되어 한참헤맸었다. 외부 IP를 특정하는 경우 적용하면 좋겠지만 L2TP의 경우 어떤 IP가 할당될 지 모르므로 0.0.0.0/0 으로 설정하던가 아니면 사용하지 않아도 무방해보인다. vyos 문서에는 아예 해당 내용이 빠져있고 vytta, edos 문서를 봐도 사용하지 않는다는 내용이다. 그런데 왜 내 설정에는 들어가 있는거지? 어디 어디 예제를 본거냐?
[2] https://help.ui.com/hc/en-us/articles/115011377588-EdgeRouter-Route-Based-Site-to-Site-IPsec-VPN