VPN 망 안의 서버로 route 되지 않을 때
VPN 서버에 접속하고, 해당 서브넷만 접속 되게 방화벽이 걸린 서버에 SSH 접속을 시도할 때, VPN 서버의 SSH로는 접속이 안 되고 나머지 다른 서버로는 접속이 되더라.
왜 이런 현상이 발생하는지는 모르겠는데 아무튼 그로인해 여러 애로사항이 꽃피는지라 방법을 찾아보았다.
일단 A라는 서버에는 SSH 및 Docker 기반의 VPN 서버가 설치되어 구동 중에 있다.
그리고 A와 같은 서브넷 하의 B라는 서버에 SSH 서버를 구동하고 있다.
둘 모두 공히 UFW를 통해 서브넷 안의 트래픽만 전달받을 수 있도록 방화벽을 걸어두었다.
이때 A VPN을 접속하고 B 서버의 SSH에 접속을 시도하면 아무런 문제없이 접속을 할 수 있었으나, A VPN 접속 후 A 서버의 SSH에 접속을 시도하면 A로 접속을 할 수 없는 현상이 있었다. 이유는 알 수 없었다.
tracert를 통해 시도하면 A 서버로는 여러단계를 거친 뒤 결국 VPN이 아닌 외부망을 통해 도달하는 것을 확인할 수 있었고, B 서버로는 VPN을 통해 도달하는 것을 확인할 수 있었다.
192.168.42.1 Gateway는 VPN 망의 Gateway이고, 172.17.0.1은 A 서버의 Docker의 Gateway이다. 이는 아래 스크린샷에서처럼 확인할 수 있다.
따라서 A 서버의 IP를 VPN Gateway를 통해 라우팅되도록 테이블을 수정해주면 된다.
route add [A서버IP] 192.168.42.1
영구적인 적용을 원한다면 -p
옵션을 추가한다.
마지막으로 A 서버의 방화벽에 192.168.42.0/24와 172.17.0.0/24에 대한 접속 허용을 추가하자.
단, VPN 서버가 뚫릴 경우 매우 위험해지므로 주의한다.