Máy chủ VPN trên Google Compute Engine với OpenVPN


13

Tôi đang cố gắng sử dụng máy chủ Google Compute Engine làm máy chủ VPN cho tất cả lưu lượng truy cập của mình (Tôi đang sống ở Nga, chúng tôi có một số vấn đề với kiểm duyệt tại đây).

Có một hướng dẫn nhỏ về VPN trên GCE , nhưng đó là về mạng giữa 2 máy chủ bên trong GCE chứ không phải với OpenVPN.

Tôi đã thực hiện tất cả các bước từ một hướng dẫn khác, về việc thiết lập VPN với OpenVPN trên Debian , tôi có thể kết nối với VPN từ máy khách, nhưng sau đó tôi không thể mở các kết nối (thậm chí không thể ping google). Trên máy chủ tôi có thể ping và tải xuống mọi thứ như bình thường.

Tôi có VPN trên Linode với cùng thiết lập và nó hoạt động tốt. Vì vậy, vấn đề là trong các quy tắc tường lửa hoặc định tuyến mạng GCE.

Tôi đã thử rất nhiều biến thể nhưng không có gì hoạt động. Xin vui lòng, nhìn vào các thiết lập và cho tôi biết những gì tôi nên thay đổi.

// dòng cấu hình bị xóa, vì vấn đề đã được giải quyết //


Có cách nào để kích hoạt chuyển tiếp ip? echo 1> / Proc / sys / net / ipv4 / ip_forward
Alec Istomin

@AlecIstomin, vâng, đã xong. Tôi có VPN trên Linode với cùng thiết lập và nó hoạt động tốt. Vì vậy, vấn đề là trong các quy tắc tường lửa hoặc định tuyến mạng GCE.
OZ_

Có thể yêu cầu hỗ trợ GCE? Điều này có vẻ như là điều họ có thể trả lời nhanh chóng.
Bill Weiss

Giá @Billweiss cho các gói hỗ trợ của họ bắt đầu từ $ 150 / tháng, nhưng nếu vấn đề này sẽ không được giải quyết trong tuần, tôi nghĩ rằng tôi sẽ trả cho họ. Ngoài ra, tôi sẽ cố gắng tìm ai đó trên oDesk để sửa nó và sau đó sẽ viết hướng dẫn trong blog của tôi.
OZ_

odesk.com/jobs/~01c4b1438a64f31fdd - đừng ngần ngại đăng ký, nếu bạn có thể giúp đỡ, các bạn.
OZ_

Câu trả lời:


7

Trước hết, cảm ơn @Shivox vì câu trả lời của anh ấy .

Và đây là cách nhanh chóng:

  • Tôi khuyên bạn nên tạo mạng bổ sung (xem tab "Mạng" ") sở thích Trong mạng, thêm cho phép quy tắc cho: tcp: 22 (nếu không tồn tại), tcp: 9700, tcp:. 17.619 . 17.619 đây là biến - thay đổi nó với bất kỳ cổng bạn thích (phạm vi là 9075-65534). Bạn chỉ cần 3 quy tắc và 2 tuyến mặc định, không có gì khác.
  • Đi tới "Tạo phiên bản máy tính", nhấp vào "Hiển thị tùy chọn nâng cao", cho phép chuyển tiếp cổng, chọn vị trí của máy chủ.
  • Bây giờ (khi bạn đã chọn vị trí), hãy thêm IP tĩnh vào máy chủ.
  • Chọn hình ảnh Ubuntu 14.04 (chính xác là phiên bản này).
  • Tạo ví dụ
  • Kết nối qua SSH (cách dễ dàng nhất - sử dụng công cụ trong trình duyệt từ bảng 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
  • Trong trình duyệt mở https://instance_ip:9700
  • Về câu hỏi về DB, nhấp vào "Lưu"
  • Trong cửa sổ đăng nhập, sử dụng pritunllàm tên người dùng và mật khẩu
  • Bây giờ thay đổi tên người dùng và mật khẩu của người dùng quản trị
  • Thêm tổ chức, sau đó 2 người dùng (cho máy tính để bàn và thiết bị di động)
  • Nhấp vào "Thêm máy chủ" trong tab "Máy chủ"
  • Sử dụng số cổng từ bước đầu tiên ( ví dụ 17619 ) và giao thức tcp.
  • Đính kèm tổ chức vào máy chủ
  • Bắt đầu máy chủ
  • Trong tab "Người dùng", các phím tải xuống cho cả hai người dùng (lưu trữ tar với các tệp ovpn bên trong).

Tôi sử dụng Viscosity cho OS X và OpenVPN kết nối cho iOS với tư cách là khách hàng. Trong Độ nhớt, bật tùy chọn "Gửi tất cả lưu lượng truy cập qua kết nối VPN" trong tab "Kết nối mạng".


Chỉ cần lưu ý: Google Cloud Platform cung cấp bản dùng thử miễn phí với 300 đô la trong 60 ngày.
OZ_ 8/2/2015

1
Intructions để cài đặt Pritunl trên Ubuntu 14.04 thay đổi: github.com/pritunl/pritunl#ubuntu-trusty
motobói

6

Bạn có thể giải quyết vấn đề không thể duyệt web thông qua VPN mặc dù có thể ping, theo dõi ... bằng một trong hai cách sau:

Trước tiên, bạn có thể sử dụng giao thức TCP thay vì UDP, bằng cách thay đổi 'proto udp' thành 'proto tcp' trong cả tệp conf của máy khách và máy chủ.

Thứ hai, bạn có thể sử dụng thiết bị nhấn thay vì điều chỉnh, bằng cách thay đổi 'dev tun' thành 'dev tap' trong cả tệp conf của máy khách và máy chủ.

Không chắc vấn đề là gì, có vẻ như đó là vấn đề từ cuối của Google.


1
Bạn là người hùng của tôi! Cảm ơn rât nhiều! Chuyển sang TCP đã thực hiện thủ thuật. Tôi sẽ mở rộng đầy đủ "cách thực hiện" trong câu trả lời riêng biệt. Cảm giác đó khi giấc mơ lâu ngày trở thành sự thật ... Cảm ơn bạn!
OZ_

4

Xin nhớ rằng Google VPC đang bỏ các gói có source_ipIP khác bên trong của máy ảo có IP bên ngoài.

Tài liệu này https://cloud.google.com/compute/docs/vpc/adv cân-vpc trạng thái:

Mạng VPC viết lại tiêu đề IP để khai báo địa chỉ IP bên ngoài của thể hiện làm nguồn. Nếu phiên bản không có địa chỉ IP bên ngoài, cuộc gọi sẽ không được phép và mạng VPC sẽ bỏ gói mà không thông báo cho người gửi.

Vì vậy, nếu openVPN của bạn chỉ chuyển tiếp các gói từ mạng khác, thì các gói đến nội bộ công cộng sẽ bị loại bỏ vì source_ipkhông khớp với bất kỳ IP bên trong của VM hiện có. Vì lý do này, bạn cần NAT các gói rời khỏi mạng cục bộ của mình, ví dụ trên nút VPN.

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

"Pritunl" được đề cập trong câu trả lời OZ_ hoạt động, bởi vì nó tự động cấu hình NAT.


3

Đây không thực sự là một câu trả lời, nhưng trang web đã không cho phép tôi thêm nó dưới dạng một nhận xét cho câu hỏi của bạn.

Tuy nhiên, tôi có cấu hình gần như chính xác như bạn đã nêu chi tiết ở trên (Tôi không định cấu hình dnsmaq trên máy chủ khó khăn)

Thật không may, VPN không hoạt động như mong đợi. Tôi có thể giải quyết một địa chỉ, ping một số máy chủ Internet và thậm chí tạo một dấu vết hoàn chỉnh trong khi kết nối với VPN. Tuy nhiên, khi tôi mở trình duyệt và điều hướng đến một trang web, kết nối rất chậm. Tôi không biết những gì có thể ảnh hưởng đến kết nối, nhưng thực sự là một vấn đề lạ.

Có lẽ ai đó từ Google có thể giúp chúng tôi biết những gì đang xảy ra.

PS 1. Như những người khác đã đề xuất trước đây, bạn có thể xác minh xem chuyển tiếp ip có được bật không? Đối với tôi, cách duy nhất để đảm bảo giá trị cho net.ipv4.ip_forward đã được khôi phục đúng cách sau khi khởi động lại là sau khi tôi sử dụng quy tắc tùy chỉnh trên /etc/sysctl.d

Ví dụ: bạn có thể thêm quy tắc bằng lệnh sau:

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

PS 2. Nếu chuyển tiếp hoạt động cho bạn, bạn có thể kiểm tra tuyến đường đến máy chủ bên ngoài trong khi kết nối với VPN không?. Đầu ra tôi nhận được khi tôi làm điều này hơi lạ (Tại sao có nhiều bước nhảy trên cùng một 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. Điều duy nhất có vẻ hoạt động chính xác là VPN đang sử dụng IP bên ngoài từ máy chủ của tôi để truy cập Internet

$ 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_ Vui mừng khi biết bạn có thể ping và theo dõi trong khi kết nối với VPN. Bây giờ, bạn có thể đăng kết quả của một trong những traceroute của bạn không?. Tôi tò mò về các dòng đầu tiên của đầu ra bởi vì có vẻ như gói được định tuyến trong một vòng lặp trong ít nhất 8 lần nhảy đầu tiên (mặc dù không phải là chuyên gia mạng)
Mario

xin lỗi, đây là: gist.github.com/jamm/028ae858a03e40495740 . Và vâng, nó trông thật lạ. Có lẽ chúng ta cần một số tuyến đường cụ thể.
OZ_


1

Bạn cần bật chuyển tiếp IP cho phiên bản VM của bạn trong đám mây google, nếu không các gói sẽ không đến được VM của bạn. Lưu ý, đây là phần riêng biệt net.ipv4.ip_forward = 1mà bạn có thể đặt trong VM của mình.

Chuyển tiếp IP chỉ có thể được đặt một lần trước khi bạn tạo VM và không thể sửa đổi sau đó. Để kích hoạt nó cho một VM mới, nhấp vào Management, security, disks, networking, sole tenancy: nhập mô tả hình ảnh ở đây

Sau đó, trong Networkingtab bấm vào Network Interfacevà đặt Chuyển tiếp IP thành ON:

nhập mô tả hình ảnh ở đây


0

Bạn cần thêm quy tắc cho phép lưu lượng truy cập cho chính OpenVPN:

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

tồn tại như quy tắc số 4
OZ_

0

Giới thiệu về Mạng.

1) Kích hoạt tất cả lưu lượng truy cập từ Mạng con OpenVPN (ví dụ 10.8.0.0/24) tại Bảng điều khiển

2) Tôi thực sự khuyên bạn nên thêm masage vào mạng của bạn

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

3) Đừng quên bật định tuyến gói trong kernel

a) một lần

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

b) mãi mãi trong /etc/sysctl.conf:

 net.ipv4.ip_forward = 1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.