진행OS
KT Cloud 사용
준비물
1. 리눅스 서버 2대 / 내 컴퓨터 (Windows)
ㄴ 클라이언트로 연결할 리눅스 서버 1대는 HTTPD(Apache) 설치 환경이 필요 (/var/www/html/index.html)
ㄴ index.html에 테스트 할 수 있는 내용을 추가. (ex. Test OpenVPN)
2. 내 컴퓨터(Windows)에 OpenVPN, FileZila 설치
3. OpenVPN 서버로 이용할 리눅스 서버는 UDP 1194 포트 오픈
4. KT Cloud 서버 관리 페이지에서 리눅스 서버2 접속설정 80포트 추가 / 방화벽은 추가 X
사설 IP
ㄴ 리눅스 OpenVPN 서버 : 172.27.0.212
ㄴ 리눅스 클라이언트 : 172.27.0.177
📌 리눅스 서버 2대 공통 설정
1. epel-release 설치
yum install epel-release
2. openvpn 설치
yum install openvpn easy-rsa
📌 OpenVPN 서버 설정 (리눅스 서버1 / Master 서버)
1. ntp 설치
yum install ntp
2. ntpd 설정
# 시간을 서울로 맞춤
timedatectl set-timezone Asia/Seoul
# 서버가 재부팅 해도 실행되게
systemctl enable ntpd
# ntp 실행
systemctl start ntpd
3. easy-rsa 설정 파일 복사
# openvpn 디렉토리 하위에 easy-rsa 디렉토리 생성
mkdir /etc/openvpn/easy-rsa
# easy-rsa 설정 파일들을 새로 만든 디렉토리에 복사
cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa
4. easy-rsa 설정
# 설정을 하기 위한 경로 이동
cd /etc/openvpn/easy-rsa
# pki 디렉토리 생성
./easyrsa init-pki
5. ca.crt 파일 생성
./easyrsa build-ca
6. 서버 .req 및 .key 파일 생성
./easyrsa gen-req [서버명] nopass
7. 서버명.crt 파일 생성
./easyrsa sign-req server [서버명]
8. .pem 파일 생성
./easyrsa gen-dh
9. ta.key 파일 생성
openvpn --genkey --secret /etc/openvpn/easy-rsa/pki/ta.key
📌 server.conf 설정
cp /usr/share/doc/openvpn-[버전]/sample/sample-config-files/server.conf /etc/openvpn/
2. 파일 수정
vi /etc/openvpn/server.conf
# 변경 후
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/[서버명].crt
key /etc/openvpn/easy-rsa/pki/private/[서버명].key
dh /etc/openvpn/easy-rsa/pki/dh.pem
# 변경 후
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
# 변경 후
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# 변경 후
user nobody
group nobody
# 변경 후
topology subnet
📌 OpenVPN 실행
systemctl enable openvpn@server.service
systemctl start openvpn@server.service
# 정상적으로 켜졌는지 확인
systemctl status openvpn@server.service
2. ip addr 혹은 ifconfig로 실행 후 적용이 되었나 확인
📌 서버 1 - client 관련 설정 (Linux / Window 클라이언트 = 2번 진행)
ㄴ 클라이언트 서버에서 하는거 아님! Master 서버(Linux 서버 1)에서 진행
ㄴ 클라이언트명 부분만 바꿔서 진행하면 됩니다
1. /etc/openvpn/easy-rsa 경로에서 진행
cd /etc/openvpn/easy-rsa
2. .req 파일 및 .key 파일 생성
./easyrsa gen-req [클라이언트명]
3. .crt 파일 생성
./easyrsa sign-req client [클라이언트명]
📌 client.conf 설정
1. 설정을 위해 client.conf 파일을 복사
cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/client.conf /etc/openvpn/client.conf
2. 파일 수정
vi /etc/openvpn/client.conf
# 변경 후
remote [외부 아이피] 1194
# 변경 후
# 클라이언트 서버 1 = 리눅스 서버 2
# 클라이언트 서버 2 = 내 컴퓨터(Windows)
ca ca.crt
cert [클라이언트서버1].crt
cert [클라이언트서버2].crt
key [클라이언트서버1].key
key [클라이언트서버2].key
📌 client 디렉토리에 파일 복사
1. 파일을 복사해둘 디렉토리 생성
# 한번만 진행
mkdir /etc/openvpn/client/[클라이언트명]
2. 생성한 디렉토리에 파일 복사
# 아래처럼 진행
cp /etc/openvpn/easy-rsa/pki/private/클라이언트명1.key /etc/openvpn/client/클라이언트명
cp /etc/openvpn/easy-rsa/pki/private/클라이언트명2.key /etc/openvpn/client/클라이언트명
cp /etc/openvpn/easy-rsa/pki/issued/클라이언트명1.crt /etc/openvpn/client/클라이언트명
cp /etc/openvpn/easy-rsa/pki/issued/클라이언트명2.crt /etc/openvpn/client/클라이언트명
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/client/클라이언트명
cp /etc/openvpn/easy-rsa/pki/ta.key /etc/openvpn/client/클라이언트명
cp /etc/openvpn/client.conf /etc/openvpn/client/클라이언트명/클라이언트명.ovpn
📌 Windows - FileZila를 이용하여 서버간 파일 복사
1. FileZila 실행 후 접속하고자 하는 서버에 접속
ㄴ 지금은 서버 1에 접속했습니다. ㄴ 접속이 포트 22번으로 밖에 안 되기 때문에 나중에 서버 2로 접속할때는 서버 1의 22포트를 빼고, 서버 2에 22포트를 넣어줘야 합니다. (내부, 외부 포트 동일하게 22로)
2. windows에서 백업용 디렉토리를 열고 안에 있는 파일을 모두 복사한다.
ㄴ 나같은 경우에 바탕화면\test\에 clientSV 디렉토리를 넣어뒀기 때문에 해당 경로로 들어갔다.
3. 복사한 파일을 C:\Program Files\OpenVPN\config 경로에 붙여넣는다
4. 윈도우 검색창에서 OpenVPN을 검색 후 아래 파일을 실행한다
5. 작업표시줄에 있는 화살표 버튼을 눌러 잠금 표시된 모니터를 우클릭한다
6. 우클릭 했을 때 뜨는 창에서 import - 파일 불러오기를 클릭
7. C:\Program Files\OpenVPN\config 경로에서 클라이언트명.ovpn 더블클릭
8. 다시 작업 표시줄에 있는 화살표를 누르고 잠금표시된 모니터를 더블클릭한다.
9. 아래와 같은 화면이 뜬다면 설정한 비밀번호를 입력 후 확인을 누른다
10. 연결에 성공했다면 5초 후에 화면 오른쪽 아래에 다음과 같은 창이 뜬다.
📌 Linux 클라이언트 - OpenVPN 연결
1. windows 에서 메모장을 관리자 권한으로 연다.
2. 파일 - 열기를 이용하여 백업용으로 남겨두었던 클라이언트명.ovpn을 연다.
3. 아래 내용을 수정한다.
4. 메모장으로 수정한 내용을 Ctrl + S를 눌러 저장하고 메모장을 종료한다.
5. 리눅스 서버끼리 주고받는 방식이 아닌 FileZila를 이용하여 파일을 주고 받는다.
ㄴ 주고받기 위하여 서버1에 할당해두었던 22포트를 해제시키고 서버2에 22포트를 다시 할당한다.
6. Linux 서버2 에서 Filezila로 클라이언트 파일을 넣어준 경로로 이동
cd /etc/openvpn/client/클라이언트명
7. openvpn --config 클라이언트명.ovpn 을 치면 아래와 같은 화면이 나온다.
vpn으로 연결하면 클라이언트 서버에서 연결이 끊기는데, 연결이 됐는지는 OpenVPN 서버를 통해 확인해볼 수 있다.
연결 확인은 다음 챕터에서 확인해보자.
📌 리눅스 서버 2와 OpenVPN 서버(리눅스 서버 1)의 연결 확인
- 리눅스 서버 1번 (OpenVPN 서버)에서 진행
1. OpenVPN에 연결된 리눅스 서버는 putty나 SecureCRT로 접속할 수 없기 때문에 OpenVPN 서버에 접속해서 명령어로 접속을 해보자.
# 클라이언트(리눅스 서버2)에 접속
ssh [클라이언트 내부 ip]
# 접속 후 클라이언트(리눅스 서버2)가 OpenVPN 서버에 제대로 연결 됐는지 확인
ip addr
# 혹은
ifconfig
📌 리눅스 서버끼리 내부 연결을 위한 Firewall 설정
- 리눅스 서버 1번 (OpenVPN 서버)에서 진행
1. CentOS 7버전 이상부터는 Firewall가 자동으로 꺼져있으니 시스템을 키고 아래 내용들을 입력한다.
# Firewall 실행
systemctl start firewalld
# 부팅 시에도 실행
systemctl enable firewalld
# 아래 내용을 똑같이 입력한다.
firewall-cmd --zone=public --add-service openvpn
firewall-cmd --zone=public --add-service openvpn --permanent
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent
firewall-cmd --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
firewall-cmd --reload
2. sysctl.conf 수정
# 경로
vi /etc/sysctl.conf
# 파일 아래에 내용 추가
net.ipv4.ip_forward = 1
# 저장 후 종료
:wq
3. network 재실행
# 재실행
systemctl restart network.service
📌 OpenVPN 연결로 Windows에서 리눅스 서버2의 홈페이지 접속하기
- 이미 웹에 접속할 수 있는 설정은 위에서 다 마쳤다!
1. 웹에 접속하기 위해서 는 Windows와 리눅스 서버2가 OpenVPN 서버와 연결이 잘 되어 있어야 한다.
2. Windows에서 할당받은 IP가 10.0.0.2일때 리눅스 서버2 홈페이지에 접속하기 위해서는 리눅스 서버2가 할당받은 IP -> 10.0.0.3으로 접속해야 한다.
'회사 > 과제' 카테고리의 다른 글
스냅샷 (0) | 2022.02.03 |
---|---|
CronTab 을 사용해 Shell Script 실행 (0) | 2022.01.26 |
HA Proxy (0) | 2022.01.20 |
기본 서비스 포트 (0) | 2022.01.18 |
DNS / Local DNS 구축 (0) | 2022.01.14 |