테스트 환경
Linux XXX 5.15.0-48-generic #54-Ubuntu SMP Fri Aug 26 13:26:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
설치 - 서버
1. openvpn 자동설치 쉘 스크립트를 다운로드 받는다
wget https://git.io/vpn -O openvpn-install.sh
2. 파일 실행권한을 부여한다
sudo chmod +x openvpn-install.sh
3. openvon 자동설치 쉘 스크립트를 실행 한다.
sudo bash openvpn-install.sh
4. 각 물음에 따라 답을하며 설치한다.
# openvpn-install.sh
[OUTPUT]
Welcome to this OpenVPN road warrior installer!
Which protocol should OpenVPN use?
1) UDP (recommended)
2) TCP
# 프로토콜을 선택한다 (1,2)
Protocol [1]: 1
# 포트를 선택한다
What port should OpenVPN listen to?
Port [1194]:
# DNS를 선택한다.
Select a DNS server for the clients:
1) Current system resolvers
2) Google
3) 1.1.1.1
4) OpenDNS
5) Quad9
6) AdGuard
DNS server [1]: 2
# 최초 생설할 VPN Client의 이름을 선택한다.
Enter a name for the first client:
Name [client]: iphone
5. 다음의 경로에서 vpn 접속에 필요한 파일을 확인한다.
# 생성된 vpn 접속 키
/root/iphone.ovpn
설치 - 클라이언트
A.[Windows] iphone.ovpn을 이용하여 서버에 접속한다.
A-1. 다운로드 및 설치
1. 다운로드 및 설치 https://openvpn.net/community-downloads/
OpenVPN-2.5.7-I602-amd64 (1).msi
4.19MB
A-2. 다운로드 받은 vpn.ovpn 파일 import 및 연결
A-3. 연결상태 확인
B. [Linux] iphone.ovpn을 이용하여 서버에 접속한다.
B-1. openvpn 설치
apt-get install openvpn
B-2. 접속
openvpn --config ./iphone.ovpn
[참고] openvpn 서비스 상태 확인(Ubuntu)
# 상태확인
sudo systemctl status openvpn-server@server.service
# 서비스 중지
sudo systemctl stop openvpn-server@server.service
# 서비스 시작
sudo systemctl start openvpn-server@server.service
# 서비스 재시작
sudo systemctl restart openvpn-server@server.service
[참고] Client에서 ovpn 파일로 접속시 접속 중이 계속되는 경우
[서버]
# 다음의 파일을 실행하여 openvpn을 삭제한다.
./openvpn-install.sh
[OUTPUT]
Looks like OpenVPN is already installed
What do you want to do?
1) Add a cert for a new user
2) Revoke existing user cert
3) Remove OpenVPN
4) Exit
Select an option [1-4]: 3
# 잔존 파일을 정리한다.
sudo apt-get autoremove
# 처음부터 다시 설치한다.
./openvpn-install.sh
[참고] 포트에 접속이 안되는 경우
[서버]
각 네트워크 Gateway에 openvpn 포트 포워딩 하기
[참고] install쉘이 실행이 안되는 경우
[서버]
#OS 업데이트하라고하는 경우(ubuntu)
sudo apt-get update
sudo apt-get upgrade -y
[참고] 설치가 완료된 후 새로운 유저 추가하기 스크립트
[서버]
#admin-test라는 ovpn 키를 /root/에 생성한다.
./openvpn-new.sh admin-test
#!/bin/bash
new_client () {
# Generates the custom client.ovpn
{
cat /etc/openvpn/server/client-common.txt
echo "<ca>"
cat /etc/openvpn/server/easy-rsa/pki/ca.crt
echo "</ca>"
echo "<cert>"
sed -ne '/BEGIN CERTIFICATE/,$ p' /etc/openvpn/server/easy-rsa/pki/issued/"$client".crt
echo "</cert>"
echo "<key>"
cat /etc/openvpn/server/easy-rsa/pki/private/"$client".key
echo "</key>"
echo "<tls-crypt>"
sed -ne '/BEGIN OpenVPN Static key/,$ p' /etc/openvpn/server/tc.key
echo "</tls-crypt>"
} > ~/"$client".ovpn
}
echo
client=$(sed 's/[^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-]/_/g' <<< "$1")
while [[ -z "$client" || -e /etc/openvpn/server/easy-rsa/pki/issued/"$client".crt ]]; do
echo "$client: invalid name."
read -p "Name: " unsanitized_client
client=$(sed 's/[^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-]/_/g' <<< "$unsanitized_client")
done
cd /etc/openvpn/server/easy-rsa/
EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-client-full "$client" nopass
# Generates the custom client.ovpn
new_client
echo
echo "$client added. Configuration available in:" ~/"$client.ovpn"
exit
출처
https://www.cyberciti.biz/faq/howto-setup-openvpn-server-on-ubuntu-linux-14-04-or-16-04-lts/