K리그 작두왕(https://jakduk.com)을 집에서 개발할때는 OpenVpn을 쓸일이 없었다. K리그 작두왕 FE 개발자도 생겨서 개발 편의성을 생각해야 했고, 나도 집 밖에서 개발을 할려고 하니 로컬에 따로 개발 환경을 구축하는게 귀찮았다. 로컬에서 DB와 Elasticsearch 등을 설치를 하지 않고 개발 DB, 개발 Elasticsearch 에 접속하기 위해 OpenVpn을 도입 하기로 했다.
OpenVpn 설치는 아래의 문서를 참고하였다.
위 문서를 참고하여 OpenVpn 설치 및 기본 뼈대를 구성했고 추가적으로 K리그 작두왕 환경에 맞게 몇가지 바꾸었다.
바꾼것은 다음과 같다.
- K리그 작두왕 내부망으로 접근할때에만 VPN을 타도록 한다
- .ovpn(OpenVpn 클라이언트 설정) 파일 속에 인증서, 키를 넣는다
부연 설명을 하자면, K리그 작두왕의 서버 환경의 경우 모두 Private 네트워크 망에 위치한다. (192.168.35.0/24) 그리고 192.168.35.xx 로 연결을 시도할때에만 VPN을 사용하고 싶었다. (참고한 위 두 문서는 모든 네트워크 통신을 VPN을 통해서 하게 되어 있다.)
또한 .opvn 파일을 작성할때 클라이언트에도 인증서 및 키 파일을 폴더에 따로 저장을 하는데 그것보단 .ovpn 파일 속에 있는게 더 편할것 같았다.
서버 설정
OpenVpn 설치 및 구동은 위에서 소개한 문서를 참고하자.
OpenVpn을 서버에 설치하고, /etc/openvpn/server.conf 파일을 열어 편집한다.
주석은 빼고 설정된 내용은 다음과 같다.
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.35.0 255.255.255.0"
push "dhcp-option DNS 210.220.163.82"
push "dhcp-option DNS 219.250.36.130"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3
explicit-exit-notify 1
push "route 192.168.35.0 255.255.255.0" 은 따로 추가한 부분으로, K리그 작두왕의 서버들은 모두 192.168.35.0/24 의 Private IP를 갖고 있으므로, 이를 표현한 것이다. 즉, OpenVpn에서 192.168.35.x 로 연결을 시도할때에만 VPN을 사용하게 된다.
클라이언트 설정
OpenVpn 클라이언트는 몇개 있는데 개인적으로 TunnelBlick를 선호해서 터널블릭 기준으로 설명한다.
OpenVpn을 로컬에 설치하고 나서 해야할 것은 OpenVpn 클라이언트 설정 파일을 만드는 것이다.
jakduk.ovpn 이라고 명명하고 내용은 다음과 같다.
client
dev tun
proto udp
remote jakduk.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
;comp-lzo
verb 3
cipher AES-256-CBC
<ca>
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
xxxx
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
xxxx
-----END PRIVATE KEY-----
</key>
<ca> <cert> <key> 에는 OpenVpn 서버 설정시 생성했던 ca.crt, server.crt, server.key 파일의 내용을 차례대로 넣어주면 된다.
생성한 jakduk.ovpn 파일을 마우스 더블 클릭하면 터널블릭에 추가된다.
맥이라면 화면 상단에 터널블릭 아이콘이 있을것이다. 클릭해보자.
이제 ssh 명령어로 접속 하면 된다!
숙제
만족하지 못한 몇가지가 있다.
지금은 서버에서 생성한 인증서와 키로 VPN을 사용중이지만, 동일한 사용자가 동시에 접속이 안된다. (정확하게는 짧은 분 단위로 끊김)
따라서 회원제 방식으로 전환을 해야 여러 사람이 동시에 접속해도 끊기지 않을것 같다.