[CentOS] OpenVPN을 이용한 내부망 MySQL 접근 확인
1분 미만
정보
해당 포스팅은 OpenVPN으로 사전 구성이 완료되어 연결이 가능한 상황 하에 진행됩니다.
만약 OpenVPN Server와 Client를 구축하는 단계부터 진행하길 원하시면 아래 포스팅 참고바랍니다.
테스트 환경
OpenVPN Server
- CentOS Linux release 7.0.1406 (Core)
- OpenVPN 2.4.6 x86_64-redhat-linux-gnu
- easy-rsa 3.0.3
Database Server
- CentOS Linux release 7.0.1406 (Core)
- MySQL 5.7.24
Client
- Eclipse 2019-03
- JAVA 1.8.0_211
- Tomcat 8.5
사전 준비
- 기본적으로
Database Server와OpenVPN Server가 같은 내부망으로 연결됐다는 가정 하에 진행합니다. - 내부망과 VPN 망은 서로 다른 대역을 사용합니다. (포스팅 기준 내부망:
172.27.0.0/16, VPN:10.8.0.0/24) - 현재 포스팅의 경우
Client→VPN→MySQL순으로 통신을 시도하고 접속되는 구조입니다.
Test Code 작성 및 접근 시도
JAVA JSP 기준 Test Code 작성
<%@page import="java.sql.Statement" %>
<%@page import="java.sql.DriverManager" %>
<%@page import="java.sql.Connection" %>
<%@page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://[DB Server Private IP]:[Port]/[DB Name]", "[User]", "[Password]");
%><p>DB 연결에 성공하였습니다!</p><%
} catch(Exception e) {
%><p>DB 연결에 실패하였습니다!</p><%
}
%>
</body>
</html>- 상위 Code처럼 JAVA JSP 기준으로 Test Code를 작성하여줍니다.
- [] 로 표기된 내용은 기입된 사항에 맞게 DB 정보를 입력합니다.
- 모든 정보를 정상적으로 입력한 경우
Tomcat을 기동 시켜줍니다.
페이지 접근을 통한 MySQL 통신 확인

- 사진과 같이
VPN연결을 진행하지 않고 Test Page 접속 시 DB 연결에 실패가 확인됩니다.

- 이 상태에서
OpenVPN Client를 실행하여OpenVPN Server로 정상 연결되는지 우선 확인합니다.

- 정상적으로
VPN에 연결된 이후 Test Page에 접근할 경우 정상적으로 DB와의 통신이 확인됩니다.
위와 같은 과정을 통해 OpenVPN 설정을 통해 외부망에서 OpenVPN Server가
위치한 eth0 인터페이스의 내부망 간 정상적인 통신이 가능한지 확인하였습니다.
이전 포스팅 상 확인 가능하듯 eth0를 공용으로 사용할 수 있도록 설정한 이후OpenVPN의 망을 eth0를 통하도록 설정했기 때문에 위와 같은 동작을 보입니다.
모든 구성에서 위와 같은 동작을 보이는 것은 아니오니 자신의 구성을 잘 파악하고
위와 같은 구성을 통해 외부망에서 내부 App을 컨트롤 할 수 있는지 판단해야합니다.
긴 포스팅을 읽어주셔서 감사합니다! 😄