OpenVPN이 포함 된 Google Compute Engine의 VPN 서버


13

모든 트래픽의 VPN 서버로 Google Compute Engine 서버를 사용하려고합니다 (러시아에 거주하고 있습니다. 여기에는 검열과 관련하여 문제가 있습니다).

GCE의 VPN에 대한 간단한 지침이 있지만 OpenVPN이 아닌 GCE 내부의 두 서버 간의 네트워크에 관한 것입니다.

Debian 에서 OpenVPN을 사용하여 VPN을 설정하는 방법 에 대한 다른 자습서의 모든 단계를 수행했으며 클라이언트에서 VPN에 연결할 수는 있지만 연결을 열 수는 없습니다 (Google을 ping조차 할 수 없음). 서버에서 평소대로 모든 것을 핑하고 다운로드 할 수 있습니다.

동일한 설정으로 Linode에 VPN이 있으며 정상적으로 작동합니다. 따라서 문제는 GCE 네트워크 라우팅 또는 방화벽 규칙에 있습니다.

나는 많은 변종을 시도했지만 아무것도 작동하지 않습니다. 설정을보고 변경해야 할 사항을 알려주십시오.

// 문제가 해결되었으므로 구성 줄이 제거되었습니다. //


IP 포워딩을 활성화하는 방법이 있습니까? echo 1> / proc / sys / net / ipv4 / ip_forward
Alec Istomin

@AlecIstomin, 그렇습니다. 동일한 설정으로 Linode에 VPN이 있으며 정상적으로 작동합니다. 따라서 문제는 GCE 네트워크 라우팅 또는 방화벽 규칙에 있습니다.
OZ_

어쩌면 GCE 지원을 요청할 수 있습니까? 이것은 그들이 신속하게 답변 할 수있는 것 같습니다.
Bill Weiss

지원 계획에 대한 @BillWeiss의 가격은 월 $ 150에서 시작하지만이 문제가 일주일 내에 해결되지 않으면 비용을 지불 할 것입니다. 또한 oDesk에서 누군가를 찾아서 수정 한 다음 내 블로그에 자습서를 작성합니다.
OZ_

odesk.com/jobs/~01c4b1438a64f31fdd- 도움이 될 수 있다면 주저하지 마십시오.
OZ_

답변:


7

우선, 자신에 대한 @Shivox 덕분에 대답 .

다음은 빠른 방법입니다.

  • . TCP : 22 (존재하지 않는 경우), TCP가 : 9700, TCP : 나는 ( ""네트워크 "탭 참조)에서 네트워크 환경 설정을 허용 규칙을 추가하려면 추가 네트워크를 만들 추천 17,619 . 17,619 여기가 변수입니다 - 어떤로 변경을 원하는 포트 (범위는 9075-65534) 3 개의 규칙과 2 개의 기본 경로 만 있으면됩니다.
  • "Compute Engine 인스턴스 생성"으로 이동하여 "고급 옵션 표시"를 클릭하고 포트 전달을 허용하고 서버 위치를 선택하십시오.
  • 이제 (위치를 선택한 경우) 서버에 고정 IP를 추가하십시오.
  • Ubuntu 14.04 이미지 (정확히이 버전)를 선택하십시오.
  • 인스턴스 만들기
  • SSH를 통해 연결 (가장 쉬운 방법-GCE 패널의 브라우저 내 도구 사용)
  • sudo su
  • apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
  • 브라우저에서 https://instance_ip:9700
  • DB에 대한 질문에서 "저장"을 클릭하십시오
  • 로그인 창에서 pritunl사용자 이름과 비밀번호로 사용하십시오
  • 이제 관리자의 사용자 이름과 비밀번호를 변경하십시오
  • 조직 추가 후 2 명 (데스크톱 및 모바일 용)
  • "서버"탭에서 "서버 추가"를 클릭하십시오.
  • 첫 번째 단계 ( 예 : 17619)의 포트 번호 와 tcp 프로토콜을 사용하십시오.
  • 서버에 조직 연결
  • 서버 시작
  • "사용자"탭에서 두 사용자 모두의 다운로드 키 (ovpn 파일이 들어있는 tar 아카이브).

OS X의 경우 점도를 사용하고 iOS의 경우 OpenVPN 연결을 클라이언트로 사용합니다. 점도에서 "네트워킹"탭의 "VPN 연결을 통한 모든 트래픽 보내기"옵션을 켜십시오.


참고 : Google Cloud Platform은 60 일 동안 300 달러로 무료 평가판을 제공합니다.
OZ_

1
Ubuntu 14.04에 Pritunl을 설치하기위한 명령 변경 : github.com/pritunl/pritunl#ubuntu-trusty
motobói

6

다음 두 가지 방법 중 하나를 사용하여 Ping, Traceroute를 수행 할 수 있음에도 불구하고 VPN을 통해 웹을 탐색 할 수없는 문제를 해결할 수 있습니다.

먼저 클라이언트와 서버 conf 파일 모두에서 'proto udp'를 'proto tcp'로 변경하여 UDP 대신 TCP 프로토콜을 사용할 수 있습니다.

둘째, 클라이언트 및 서버 conf 파일 모두에서 'dev tun'을 'dev tap'으로 변경하여 tun 대신 tap 장치를 사용할 수 있습니다.

문제가 무엇인지 확실하지 않은 경우 Google의 문제인 것 같습니다.


1
너는 나의 영웅이야! 대단히 감사합니다! TCP로 전환하여 트릭을 수행했습니다. 별도의 답변으로 전체 "방법"을 확장하겠습니다. 오랜 꿈이 이루어 졌을 때의 느낌 ... 감사합니다!
OZ_

4

Google VPC는 source_ip외부 IP를 가진 VM의 내부 IP 이외의 패킷을 삭제합니다 .

이 문서는 https://cloud.google.com/compute/docs/vpc/advanced-vpc 상태입니다.

VPC 네트워크는 IP 헤더를 다시 작성하여 인스턴스의 외부 IP 주소를 소스로 선언합니다. 인스턴스에 외부 IP 주소가없는 경우 통화가 허용되지 않으며 VPC 네트워크는 발신자에게 알리지 않고 패킷을 삭제합니다.

따라서 openVPN이 다른 네트워크에서 패킷을 전달하는 source_ip경우 기존 VM의 내부 IP와 일치하지 않는 공개 내부 패킷이 삭제됩니다 . 이러한 이유로 로컬 노드를 떠나는 패킷 (예 : VPN 노드)을 NAT로 연결해야합니다.

Chain POSTROUTING (policy ACCEPT)
target      prot opt source              destination         
MASQUERADE  all  --  192.168.0.0/16      !192.168.0.0/16

OZ_ 답변에 언급 된 "Pritunl"은 NAT를 자동으로 구성하기 때문에 작동합니다.


3

이것은 실제로 답변이 아니지만 사이트에서 귀하의 질문에 의견으로 추가 할 수는 없었습니다.

그럼에도 불구하고, 위에서 설명한 것과 거의 동일한 구성을 가지고 있습니다 (서버에서 dnsmaq를 구성하지 않았습니다)

불행히도 VPN이 예상대로 작동하지 않습니다. 주소를 확인하고 일부 인터넷 호스트를 핑 (ping)하고 VPN에 연결된 상태에서 완전한 추적을 수행 할 수도 있습니다. 그러나 브라우저를 열고 사이트로 이동하면 연결 속도가 느려집니다. 연결에 어떤 영향을 줄 수 있는지 모르겠지만 실제로는 이상한 문제입니다.

Google 직원이 현재 진행중인 상황을 알려줄 수 있습니다.

PS 1. 다른 사람들이 이전에 제안했듯이 ip 전달이 활성화되어 있는지 확인할 수 있습니까? 나를 위해, net.ipv4.ip_forward 의 값 이 재부팅 후 /etc/sysctl.d에서 사용자 정의 규칙을 사용한 후 올바르게 복원 되었는지 확인하는 유일한 방법

예를 들어 다음 명령을 사용하여 규칙을 추가 할 수 있습니다.

$ sudo echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/90-useroverrides.conf

PS 2. 포워드가 작동하면 VPN에 연결되어있는 동안 외부 호스트에 대한 추적 경로를 테스트 할 수 있습니까? 내가 할 때 얻은 출력은 약간 이상합니다 (동일한 IP에 여러 개의 홉이있는 이유는 무엇입니까?) :

$ sudo traceroute www.yahoo.com -T -p 80 -N 1 -z 0.5 -q 1
traceroute to www.yahoo.com (98.139.183.24), 30 hops max, 60 byte packets
 1  209.85.241.26 (209.85.241.26)  0.764 ms
 2  209.85.241.34 (209.85.241.34)  0.668 ms
 3  209.85.241.26 (209.85.241.26)  0.966 ms
 4  209.85.241.36 (209.85.241.36)  0.702 ms
 5  209.85.241.28 (209.85.241.28)  0.865 ms
 6  209.85.241.36 (209.85.241.36)  0.642 ms
 7  209.85.241.26 (209.85.241.26)  0.921 ms
 8  209.85.241.28 (209.85.241.28)  18.837 ms
 9  72.14.238.107 (72.14.238.107)  13.378 ms
10  72.14.237.131 (72.14.237.131)  38.275 ms
11  209.85.254.131 (209.85.254.131)  13.349 ms
12  *
13  ae-8.pat1.bfz.yahoo.com (216.115.101.231)  44.903 ms
14  ae-4.msr1.bf1.yahoo.com (216.115.100.25)  45.323 ms
15  xe-10-3-1.clr1-a-gdc.bf1.yahoo.com (98.139.232.101)  47.382 ms
16  et18-25.fab6-1-sat.bf1.yahoo.com (98.139.128.103)  45.793 ms
17  po-13.bas1-7-prd.bf1.yahoo.com (98.139.129.209)  41.143 ms
18  ir2.fp.vip.bf1.yahoo.com (98.139.183.24)  42.451 ms

PS 3. VPN이 제대로 작동하는 유일한 것은 VPN이 호스트의 외부 IP를 사용하여 인터넷에 액세스하는 것입니다.

$ sudo curl --interface tun0 checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 107.178.XXX.XXX</body></html>

@OZ_ VPN에 연결되어있는 동안 핑과 추적 경로를들을 수있게되어 기쁩니다. 자, 당신의 traceroute 중 하나의 결과를 게시 할 수 있습니까? 패키지가 최소한 처음 8 번의 점프에 대해 루프로 라우팅되는 것처럼 보이기 때문에 출력의 첫 번째 라인이 궁금합니다 (네트워크 전문가는 아니지만)
Mario

죄송합니다, 여기 있습니다 : gist.github.com/jamm/028ae858a03e40495740 . 그리고 네, 이상해 보입니다. 어쩌면 특정 경로가 필요할 수도 있습니다.
OZ_


1

Google 클라우드에서 VM 인스턴스에 IP 전달을 사용하도록 설정해야합니다. 그렇지 않으면 패킷이 VM에 도달하지 않습니다. 이것은 net.ipv4.ip_forward = 1VM에서 설정할 수있는 것과 별개입니다 .

IP 전달은 VM을 만들기 전에 한 번만 설정할 수 있으며 나중에 수정할 수 없습니다. 새 VM에 대해 활성화하려면 다음을 클릭하십시오 Management, security, disks, networking, sole tenancy. 여기에 이미지 설명을 입력하십시오

그런 다음 Networking탭에서을 클릭 Network Interface하고 IP 전달을 ON다음으로 설정 하십시오 .

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


0

OpenVPN 자체의 트래픽을 허용하는 규칙을 추가해야합니다.

iptables -A INPUT -p udp --dport 1194 -j ACCEPT

규칙 # 4로 존재
OZ_

0

네트워크 정보.

1) 콘솔에서 OpenVPN 서브넷 (예 : 10.8.0.0/24)의 모든 트래픽을 활성화합니다

2) 네트워크에 가장 무도회를 추가하는 것이 좋습니다.

firewall-cmd --zone=trusted --add-masquerade --permanent
firewall-cmd --reload-all

3) 커널에서 패킷 라우팅을 활성화하는 것을 잊지 마십시오

a) 한 번

 echo 1 > /proc/sys/net/ipv4/ip_forward

b) /etc/sysctl.conf에서 영원히 :

 net.ipv4.ip_forward = 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.