요즘 VPN 기술이 더 대중화되고 있습니다. 일반 사용자는 VPN을 사용하여 인터넷에 안전하게 액세스합니다. 또한 로컬에서 차단된 웹사이트와 서비스를 우회하고 외부의 악성 행위로부터 보호하는 데 도움이 됩니다. VPN 서버에 연결할 때 컴퓨터와 서버 사이에 외부에서 액세스할 수 없는 안전한 터널이 있으므로 VPN 서버가 인터넷 액세스 포인트가 됩니다. 무료와 유료를 포함하여 많은 VPN 서비스가 있지만 어떤 이유로 작동하지 않으면 항상 자신의 VPN 서버를 구성할 수 있습니다.
귀하의 VPN을 실행하려면 다음을 수행해야 합니다. VPS 서버 렌트. VPN 연결을 만들 수 있는 다양한 소프트웨어가 있습니다. 지원되는 운영 체제와 사용되는 알고리즘에 따라 서로 다릅니다. VPN 서버를 설정하는 두 가지 독립적인 접근 방식을 살펴보겠습니다. 첫 번째는 이미 구식으로 간주되고 안전하지 않지만 구성하기 정말 쉬운 PPTP 프로토콜을 기반으로 합니다. 다른 하나는 현대적이고 안전한 소프트웨어 OpenVPN을 사용하지만 타사 클라이언트 애플리케이션과 보다 철저한 설정 프로세스를 설치해야 합니다.
테스트 환경에서는 Ubuntu Server 18.04로 구동되는 가상 서버를 사용할 것입니다. 방화벽은 서버에서 꺼질 것입니다. 방화벽의 구성은 별도의 문서가 필요하기 때문입니다. Windows 10에서의 설정 프로세스를 설명하겠습니다.
예비
어떤 VPN 서버를 선택하든 인터넷 액세스는 운영 체제의 통합된 수단을 통해 설정됩니다. 외부 서비스 인터페이스를 통해 인터넷 액세스를 열려면 인터페이스 간 패킷 전달을 허용하고 네트워크 주소 변환을 구성해야 합니다.
패킷 전달을 켜려면 파일을 엽니다. “/etc/sysctl.conf” 변경 “net.ipv4.ip_forward” 매개변수 값을 1.
컴퓨터를 재부팅하지 않고 변경 사항을 적용하려면 다음 명령을 실행하세요.
sudo sysctl -p /etc/sysctl.conf
네트워크 주소 변환은 다음을 통해 구성됩니다. iptables에. 먼저 명령을 실행하는 외부 네트워크 인터페이스의 이름을 확인하십시오. "IP 링크 쇼" - 다음 단계에서 필요합니다. 저희 이름은 “ens3”.
모든 로컬 네트워크 노드에 대해 외부 인터페이스에서 네트워크 주소 변환을 활성화합니다.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
서버 인터페이스의 실제 이름을 지정해야 하며, 당사와 다를 수 있습니다.
기본적으로 iptables에서 생성된 모든 규칙은 서버 재시작 후 재설정됩니다. 이를 방지하려면 다음을 사용하세요. “iptables-영구” 유틸리티. 다음 패킷을 설치하세요:
sudo apt install iptables-persistent
설치 과정 중 어느 시점에서 현재 iptables 규칙을 저장할 것을 제안하는 구성 창이 표시됩니다. 규칙이 이미 정의되어 있으므로 확인하고 클릭하기만 하면 됩니다. "예" 두 번. 이제 규칙은 서버를 다시 시작한 후에 자동으로 적용됩니다.
PPTP 서버
서버 구성
패킷을 설치하세요:
sudo apt install pptpd
설치가 끝나면 파일을 열어보세요 “/etc/pptpd.conf” 모든 텍스트 편집기에서 다음과 같이 편집하세요:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
그 후 파일을 편집하세요 “/etc/ppp/pptpd-옵션”. 대부분의 매개변수는 기본적으로 설정됩니다.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
다음 단계에서는 클라이언트 연결에 대한 레코드를 만들어야 합니다. 사용자를 추가하고 싶다고 가정해 보겠습니다. “vpnuser” 비밀번호 포함 "1" 그리고 그에게 동적 주소 지정을 허용합니다. 파일을 엽니다. “/etc/ppp/chap-secrets” 그리고 파일 끝에 사용자 매개변수를 담은 다음 줄을 추가합니다.
vpnuser pptpd 1 *
“pptpd” value는 파일에서 지정한 서비스의 이름입니다. “pptpd-옵션”. 대신에 “*” 고정 IP 주소를 지정할 수 있습니다. 결과에서 파일 "챕 시크릿" 다음과 같이 표시되어야합니다.
설정을 적용하려면 재설정하세요. pptpd 서비스를 자동 로딩에 추가하세요.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
서버 구성이 완료되었습니다.
클라이언트 구성
엽니다 "스타트" - "설정" - 네트워크 및 인터넷 - "VPN" 클릭 “VPN 연결 추가”
열린 창에 연결 매개변수를 입력하고 클릭하세요. "저장"
- VPN 제공자: “Windows(내장)”
- 연결 이름: “vpn_connect” (원하는 이름을 선택할 수 있습니다)
- 서버 이름 또는 주소: (서버의 외부 IP 주소를 지정하세요)
- VPN 유형: "자동"
- 로그인 정보 유형: “사용자 이름 및 비밀번호”
- 사용자 이름 : vpn사용자 (서버의 "chap-secrets" 파일에 지정된 이름)
- 암호: 1 (예: "chap-secrets" 파일)
매개변수를 저장한 후 창에 새 VPN 연결이 표시됩니다. 연결을 왼쪽 클릭하고 선택합니다. "연결". 연결이 성공한 경우 다음이 표시됩니다. "연결됨" 상태.
옵션에서 클라이언트와 서버의 내부 주소를 찾을 수 있습니다. 필드 “목적지 주소” 외부 서버 주소를 표시합니다.
연결시 서버의 내부 IP 주소, 172.16.0.1 우리의 경우, 모든 발신 패킷에 대한 기본 게이트웨이가 됩니다.
온라인 서비스를 사용하면 컴퓨터의 외부 IP 주소가 이제 VPN 서버의 IP 주소와 동일한지 확인할 수 있습니다.
OpenVPN 서버
서버 구성
추가 구성을 위해서는 루트 접근 권한이 필요하므로 현재 사용자의 권한 수준을 높여보겠습니다.
sudo -s
필요한 모든 패킷을 설치합니다. “이지-RSA” 암호화 키를 관리하는 패킷.
apt install openvpn easy-rsa iptables-persistent
UDP 프로토콜을 통해 포트 1194에서 들어오는 연결을 허용하고 iptables 규칙을 적용합니다.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
"Easy-RSA" 패키지에서 복사한 파일로 디렉토리를 만들고 해당 디렉토리로 이동합니다.
make-cadir ~/openvpn
cd ~/openvpn
공개 키 인프라(PKI)를 생성합니다.
./easyrsa init-pki
인증 기관(CA) 루트 인증서를 생성합니다.
./easyrsa build-ca
생성 과정에서 비밀번호를 설정하고 기억하라는 메시지가 표시됩니다. 또한 질문에 답하고 키 소유자 정보를 입력해야 합니다. 대괄호 안에 제공된 기본값은 그대로 두어도 됩니다. "Enter" 키를 눌러 입력을 완료하세요.
개인 키와 인증서 요청을 생성하세요. 인수로 임의의 이름을 지정하세요. 이 경우에는 "vpn-server"입니다.
./easyrsa gen-req vpn-server nopass
일반 이름 값은 기본값으로 둡니다.
생성된 서버 인증서 요청에 서명합니다.
./easyrsa sign-req server vpn-server
이 단계에서는 서명을 확인하려면 "예"라고 대답한 다음 루트 인증서 생성 중에 생성된 비밀번호를 입력합니다.
Diffie-Hellman 매개변수를 생성합니다. 이 매개변수는 서버와 클라이언트 간의 안전한 키 교환에 사용됩니다.
./easyrsa gen-dh
필요한 모든 파일이 생성되었습니다. OpenVPN 작업 디렉터리에 "keys" 폴더를 만들어 키를 저장하고 생성된 파일을 여기에 복사해 보겠습니다.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
NAT를 사용하여 구성 iptables 규칙. 다음 이름의 파일을 만듭니다. nat 편집을 위해 열어주세요 /etc/openvpn/ 디렉토리.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
파일을 저장하고 실행 가능하게 만듭니다.
sudo chmod 755 /etc/openvpn/nat
서버 구성 템플릿을 복사합니다.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
파일 열기 “/etc/openvpn/server.conf” 편집하려면 다음 줄이 포함되어 있는지 확인하고, 필요한 경우 편집하세요.
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
서버에서 트래픽 전달을 활성화합니다.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
구성을 적용하려면 OpenVPN을 시작합니다.
systemctl restart openvpn@server
서버 구성이 완료되었습니다!
클라이언트 구성
OpenVPN 공식 홈페이지로 이동하세요.https://openvpn.net”로 이동 “커뮤니티” 안내
아래로 스크롤하여 운영 체제 버전에 맞는 설치 프로그램을 다운로드하세요. 이 경우에는 Windows 11 ARM64입니다.
모든 매개변수를 기본값으로 두고 애플리케이션을 설치합니다.
다음 단계에서는 서버에서 다음 파일을 준비하고 클라이언트 컴퓨터로 전송해야 합니다.
- 공개 키와 개인 키
- 인증 센터 키 사본
- 설정 파일 템플릿.
서버에 연결하고 권한을 상승시키고 생성된 디렉토리로 이동합니다. "~/openvpn".
sudo -s
cd ~/openvpn
클라이언트에 대한 개인 키와 인증서 요청을 생성합니다. 인수로 임의의 이름을 지정하세요. 이 경우에는 "client1"입니다.
./easyrsa gen-req client1 nopass
루트 인증서를 생성할 때 설정한 비밀번호를 입력하고 일반 이름 값은 기본값으로 둡니다.
생성된 클라이언트 인증서 요청에 서명합니다.
./easyrsa sign-req client client1
이 단계에서는 서명을 확인하려면 "예"라고 대답한 다음 루트 인증서 생성 중에 생성된 비밀번호를 입력합니다.
편의상 홈 디렉토리에 'client1'이라는 이름의 폴더를 만들고 클라이언트 컴퓨터로 전송할 모든 파일을 여기에 복사해 보겠습니다.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
클라이언트 구성 파일 템플릿을 동일한 디렉토리로 복사합니다. 파일 확장자를 다음으로 변경합니다. “.ovpn” 복사하는 동안.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
디렉토리 및 모든 파일의 소유자를 변경합니다. “~/클라이언트1/” 클라이언트에게 배포할 수 있도록 하세요. 만들어 봅시다. “미하일” 우리의 경우에는 소유자입니다.
chown -R mihail:mihail ~/client1
클라이언트 컴퓨터로 이동하여 콘텐츠를 복사합니다. “~/클라이언트1/” 폴더. 다음을 사용하여 이를 수행할 수 있습니다. “PSCP” Putty와 함께 사용할 수 있는 유틸리티입니다.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
키 파일을 저장할 수 있습니다 “ca.crt”, “클라이언트1.crt”, “클라이언트1.키” 원하는 곳 어디든. 우리의 경우, 이 폴더에 있습니다. “c:\Program Files\OpenVPN\keys”그리고 우리는 config 파일을 모드합니다 “클라이언트.ovpn” 로 “c:\프로그램 파일\OpenVPN\config” 디렉토리.
이제 클라이언트를 구성해 보겠습니다. 파일을 엽니다. “c:\프로그램 파일\OpenVPN\config\client.ovpn” 텍스트 편집기에서 다음 줄을 편집하세요.
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
나머지는 그대로 두세요.
파일을 저장하고 클라이언트 애플리케이션을 시작합니다. “OpenVPN GUI”.
작업 표시줄에서 앱 아이콘을 마우스 오른쪽 버튼으로 클릭하고 선택하세요. "연결"연결이 성공하면 아이콘이 녹색으로 바뀝니다.
온라인 서비스를 사용하여 공용 IP 주소가 변경되었고 이제 서버의 IP 주소와 동일한지 확인하세요.