Ubuntu를 VPN 서버로 설정하는 가장 쉬운 방법


68

인터넷에 VPN 클라이언트 및 서버 설정에 대한 많은 자습서가 있다는 것을 알고 있습니다.

나는 당신이 simple / short 하나를 발견 하고 서버 부분에만 관심이 있습니다.

클라이언트의 경우 OS X를 사용 하므로 Cisco IPsec에 비용이 드는 것으로 가정 L2TP over IPsec하거나 사용하는 솔루션을 선호합니다 PPTP.

설정하는 데 너무 많은 시간을 보내고 싶지 않습니다. 아마 누군가 이미 설정 스크립트를 만들었을 것입니다 :)

참고 : Ubuntu 12.04를 실행하는 EC2 마이크로 인스턴스를 사용하고 있습니다.


3
참고 : CISCO IPSec은 StrongSwan 및 많은 구성을 통해 달성 할 수 있지만 까다 롭습니다. PPTP는 더 이상 안전하지 않습니다. IPSec을 통한 ANd L2TP에는 L2TP 및 IPSec 구성이 모두 필요합니다. 내 대답에 PPTP가 설명되어 있지만 여가를 선택하십시오.
— Thomas Ward

답변:


24

업데이트 : Sierra에서 macOS는 더 이상 PPTP vpn을 지원하지 않습니다. 이 답변은 macOS 클라이언트 Sierra 이상에서는 유효하지 않습니다.

PoPToP를 통한 PPTP는 쉽다

  1. apt-get install pptpd
  2. /etc/pptpd.confremoteip 옵션을 편집 하여 DHCP 서버가 제공하지 않는 네트워크 범위로 설정하십시오.
  3. /etc/ppp/chap-secrets사용자 이름 및 비밀번호 편집 및 추가

예 :

vpnuser pptpd vpnpassword *

이것이 pptp를 설정하는 데 필요한 전부입니다. 이제 OS X 클라이언트로 테스트하십시오.


또한 어느 위치에서나이 서버에 연결한다는 점을 고려할 때 어떤 localip 및 remoteip 값이 가장 안전한지 궁금합니다. 의 definetly와 디폴트 값 192.168.0.및 192.168.1.아마 최악 중 하나입니다.
— sorin

5 월 12 일 13:28:06 zork pppd [9447] : 플러그인 /usr/lib/pptpd/pptpd-logwtmp.so가로드되었습니다. 5 월 12 일 13:28:06 zork pppd [9447] : pppd 2.4.5 루트로 시작, uid 0 5 월 12 일 13:28:06 zork pppd [9447] : 인터페이스 ppp0 사용 5 월 12 일 13:28:06 zork pppd [9447 ] : 연결 : ppp0 <-> / dev / pts / 3 5 월 12 일 13:28:36 zork pppd [9447] : 끊기 (SIGHUP) 5 월 12 일 13:28:36 zork pppd [9447] : 모뎀 끊기 5 월 12 일 13 : 28 : 36 zork pppd [9447] : 연결이 종료되었습니다. 5 월 12 일 13:28:36 zork pppd [9447] : Exit. 아직 작동하지 않습니다! 귀하의 가이드가 불완전합니다 (아직);)
— sorin

그래,이 작동하지 않습니다.
— bkerensa 2016 년

1
나를 위해 일하지 않았다
— Tyler Gillies

@SorinSbarnea 해당 IP는 개인 정보이며 인터넷을 사용하지 않으므로 "가장 안전"하다는 것이 무엇인지 모르겠습니다. 카페 나 연결하는 직장과 같은 IP 범위가 아닌 경우 가장 좋은 결과를 얻을 수 있습니다. 192.168.42. * 시도해보십시오.
— Jay _silly_evarlast_ Wren

86

경고 : PPTP는 보안 프로토콜입니다! 암호화가 위반되었을뿐만 아니라 인증이 일반 텍스트로 전송되어 쉽게 가로 챌 수 있습니다. 암호를 무차별 처리하는 데 필요한 시간은 단일 DES 키를 무차별 강제로 처리하는 데 걸리는 시간과 거의 같습니다. PPTP 대신 OpenVPN 또는 다른 VPN 아키텍처를 사용해보십시오!

내가 사용 이 가이드를 내 우분투 12.04 서버에 PPTP VPN 서버를 설정할 수 있습니다.


링크의 요점을 요약하면 다음과 같습니다.

1 : 설치 pptpd및 ufw. iptablesufw 대신 사용할 수 있지만, 쉽게 ufw알 수 있도록하는 것이 좋습니다 iptables.

sudo apt-get install pptpd ufw

2 : 필요한 포트를 엽니 다. 이 가이드에서는 pptp vpn에 22 (SSH) 및 1723을 제안합니다.

sudo ufw 허용 22
sudo ufw 허용 1723
sudo ufw 활성화

3 : 편집 /etc/ppp/pptpd-options. 좋아하는 편집기 (mine의 nano, 그래서 명령은 sudo nano /etc/ppp/pptpd-options)로 파일을 열고 #모든 OS에서 보편적으로 작동하려면 앞에 줄을 넣어서 주석을 주석 처리하십시오 .

거절하다
거절하다
거부하다

암호화를 비활성화하려면이 줄에 주석을 달 수 있습니다. require-mppe-128

4 : 편집하는 동안 /etc/ppp/pptpd-optionsVPN의 DNS 서버를 추가하십시오. 이 예는 OpenDNS 서버를 사용합니다.

ms-dns 208.67.222.222
ms-dns 208.67.220.220

5 : 편집 /etc/pptpd.conf. 좋아하는 편집기로 파일을여십시오 (나의 나노이므로 나에게 필요한 명령은 sudo nano /etc/pptpd.conf). 시스템의 로컬 VPN IP를 추가해야하므로 다음을 추가하십시오.

localip 10.99.99.99
remoteip 10.99.99.100-199

시스템이 VPS 인 경우 "localip"에 퍼블릭 IP를 사용하십시오. 로컬 네트워크에 있지 않고 로컬 네트워크에있는 경우 컴퓨터의 네트워크 IP를 사용하십시오. 서브넷에 이러한 IP가 존재하면 다른 IP와 범위를 사용하십시오! VPS의 공개 IP를 모르는 경우 다음을 실행하여 찾으십시오.dig +short myip.opendns.com @resolver1.opendns.com

6 : 편집 /etc/ppp/chap-secrets. 즐겨 사용하는 편집기 (mine의 nano이므로 명령은 sudo nano /etc/ppp/chap-secrets)로 파일을 열고 인증 데이터를 추가하십시오.
형식 /etc/ppp/chap-secrets은 다음과 같습니다.

[사용자 이름] [서비스] [비밀번호] [허용 된 IP 주소]

예를 들면 다음과 같습니다. sampleuser pptpd samplepassword *

7 : pptpd를 다시 시작하십시오. 터미널에서이 명령을 실행하십시오.sudo /etc/init.d/pptpd restart

8 : 편집 /etc/sysctl.conf. 좋아하는 편집기로 파일을여십시오 (나의 나노이므로 나에게 필요한 명령은 sudo nano /etc/sysctl.conf). 합니다 (를 제거하여 다음 줄을 취소합니다 주석 #에의 시작 부분에) /etc/sysctl.conf: net.ipv4.ip_forward=1
구성을 다시로드 : sudo sysctl -p

9 : 이 단계에서는 ufw가 있다고 가정합니다. 옵션을 에서 다음 으로
수정 /etc/default/ufw및 변경DEFAULT_FORWARD_POLICYDROPACCEPT

10 : 이 단계에서는 ufw가 있다고 가정합니다.
편집 하고 규칙 /etc/ufw/before.rules의 시작 /etc/ufw/before.rules또는 *filter규칙 바로 앞에 다음을 추가하십시오 (권장).

# NAT 테이블 규칙
* nat

: 접수 수락 [0 : 0]
# eth0에 앞으로 트래픽을 허용
-포스트 라우팅 -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# NAT 테이블 규칙 처리
범하다

커널 버전 3.18 이상이있는 경우 (을 실행하여 확인할 수 있음 uname -r) 행 앞에 다음 행을 추가하십시오 # drop INVALID packets ....

-A ufw-before-input -p 47 -j ACCEPT

11 : 방화벽을 다시 시작하여 규칙 세트를 새로 고치고 /etc/ufw/*.rules파일에 추가 한 규칙을 적용하십시오 . sudo ufw disable && sudo ufw enable

경고 : 서버에서 웹 사이트를 호스팅하는 경우 HTTPS와 같이 다른 포트를 열어야하는 경우 해당 포트를 허용 된 목록에 개별적으로 추가해야합니다.sudo ufw allow <PORT>


4
이제 도대체 내가하는 일 : D 서버에서 작업하고 있는데 어떻게 연결
— 해야할지 모르겠다.

1
@Jamie Network Manager 내부의 문서를 언급하지 않고 VPN에 연결하는 데 대한 Ask Ubuntu의 다른 문서 및 항목이 많이 있습니다. 이 질문은 VPN 설정과 서버 측에만 적용됩니다. 연결 부분이 아닙니다.
— 토마스 워드

: D 초고속 응답 : DI 나는 그것을 해결했을 수도 있다고 생각합니다. 잘못 설정했을 것입니다. 이것은 ufw가 활성화되어 있으며 대부분의 포트를 허용한다고 말했습니다. 나는 iptables와 함께 연주합니다 이것이 어쨌든 나를 얻을 수 있는지
— Jamie Hutber

@Jamie 나는 당신이 집에 도착했을 때 사용할 iptables 명령을 줄 수 있습니다.
— 토마스 워드

1
iptables / netfilter는 ufw와 함께 사용되며, ufw는 최종 사용자를위한 규칙과 명령 처리 기능이 더 좋습니다.
— 토마스 워드

19

Ubuntu 12.04의 PPTP VPN 예

다음은 Ubuntu 12.04에서 기본 PPTP VPN 서버를 설정하는 빠른 자습서입니다.

필요한 패키지 설치

                          sudo apt-get install ppp pptpd

서버에서 PPTP IP 범위 구성

                          sudo nano /etc/pptpd.conf

끝에 다음 줄을 추가하십시오

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

이렇게하면 IP 범위 10.89.64.100 ~ 10.89.64.150을 PPTP 클라이언트에 배포하면서 IP 10.89.64.1을 사용하도록 PPTP 서버를 설정합니다. 개인 IP 주소이고 서버에서 이미 사용중인 IP 주소와 충돌하지 않는 한 원하는대로 변경하십시오.

클라이언트가이 PPTP 서버에 연결할 때 사용할 DNS 서버 구성

                          sudo nano /etc/ppp/pptpd-options

수정 또는 끝에 다음 줄 추가

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

PPTP 사용자 생성

                          sudo nano /etc/ppp/chap-secrets

파일이 다음과 같이 보이도록 하단에 줄을 추가하십시오.

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

PPTP 연결을위한 NAT 구성

이 단계가 없으면 연결할 수는 있지만이 서버에서 웹 연결을로드 할 수는 없습니다.

                          sudo nano /etc/rc.local

"exit 0"줄 바로 앞에 하단에 다음을 추가하십시오.

                          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0이라고 가정하면 ifconfig네트워크 이름을 확인할 수 있습니다 .

IPv4 넘기기 활성화 :

                          sudo nano /etc/sysctl.conf

다음 줄의 주석을 해제하십시오.

                          net.ipv4.ip_forward=1

그런 다음 구성을 다시로드하십시오.

                          sudo sysctl -p

VPS를 재부팅하면 모든 PPTP 클라이언트에서 모든 것이 제대로 작동합니다.


클라이언트 측 구성

Mac의 경우 PPTP VPN 연결을 추가했는지 확인하십시오. 또한 인증 설정에서 서버 주소, 계정 이름 및 비밀번호 만 설정하면됩니다. 여기에는 고통이 없습니다.

Linux의 경우 NetworkManager는 VPN 연결을 추가합니다. PPTP VPN 연결을 추가했는지 확인하십시오. 그리고 내가 사용하는 구성은 다음과 같습니다.

PPTP / VPN 클라이언트 연결을 디버그하고 수정하는 방법

여기에 이미지 설명을 입력하십시오

그리고 Windows의 경우

여기에 이미지 설명을 입력하십시오


이 방법은 Ubuntu 12.04 비 서버 에디션에서도 작동합니까? 이 VPN 네트워크에 연결하기 위해 클라이언트가 사용해야하는 IP 번호는 무엇입니까?
— Rasoul

네, 당신은 @Rasoul를 VPN에 연결하기 위해 클라이언트에서 서버 IP를 사용할 수 있고, 또한 서버가 아닌 버전입니다
— 카심

작동하지 않습니다. 우분투 서버 13.04. 클라이언트가 DNS를 찾지 못했습니다.
— knutole

@knutole IPTables 규칙이 올바르게 라우팅되고 있는지 확인하십시오. en0 인터페이스가 있고 다른 이름이 지정되어 있지 않은지 확인하십시오. 공개 IP 주소가 표시되어야합니다.
— Nick Woodhams

예, 귀하의 예에서 어떤 IP가 서버 IP입니까? 10.89.64.1? 그런 다음 Ubuntu 네트워크 관리자에서 클라이언트는 10.89.64.1을 게이트웨이로 표시합니까?
— dranxo

9

이 스레드의 다른 답변은 제 경우에는 부분적인 답변이었습니다. 우분투 12.04.3에서 나를 위해 일한 것은 다음과 같습니다.

sudo apt-get install pptpd

다음을 /etc/pptpd.conf에 추가하십시오 (IP 주소는 중요하지 않으며 ppp0 인터페이스의 IP 주소 일뿐입니다).

localip 10.0.0.1
remoteip 10.0.0.100-200

/ etc / ppp / pptpd-options에 DNS 서버 추가

ms-dns 8.8.8.8
ms-dns 8.8.4.4

IP 전달 활성화

sudo vim /etc/sysctl.conf

이 줄 주석 해제

net.ipv4.ip_forward=1

변경 사항을 저장하다

sudo sysctl -p /etc/sysctl.conf

/ etc / ppp / chap-secrets를 편집하고 다음 형식으로 VPN 사용자를 추가하십시오.

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

PPTP 재시작

service pptpd restart

ifconfig기본 인터페이스를 실행 하고 찾으십시오. 제 경우에는 br0 이었습니다 (물리적 머신의 가상 머신이 인터페이스를 공유 할 수 있도록 변경했습니다. 아마도 en0 일 것입니다 )

여기에 이미지 설명을 입력하십시오

iptables 백업

iptables-save > ~/iptables.save

이제 ipconfigs 변경 사항이 ifconfig에 의해 표시되는 기본 인터페이스를 사용하도록하십시오.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface br0 -j ACCEPT

시스템을 재부팅 할 때 지속적으로 유지하기 위해;

sudo apt-get install iptables-persistent

클라이언트 컴퓨터에 VPN 추가 (Mac)

시스템 환경 설정> 네트워크> [+]> VPN

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

그런 다음 인증 설정> 비밀번호를 선택한 다음 여기에 비밀번호를 입력하십시오.

여기에 이미지 설명을 입력하십시오


7

다음은 OpenVPN의 고통을 해결해주는 매우 달콤한 프로젝트입니다.

https://github.com/Nyr/openvpn-install

그냥 실행하면 열린 VPN을 설치하고 구성합니다. 결국에는 클라이언트를 설정하는 데 사용할 수있는 client.ovpn 파일이 나타납니다. 꽤 잘 작동하는 것 같습니다.


이런 젠장. 그냥 작동합니다. 왜 널리 인식되지 않는지 궁금합니다.
— Marcus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.