OpenVPN ile Google Compute Engine'deki VPN sunucusu


13

Tüm trafiğim için Google Compute Engine sunucusunu VPN sunucusu olarak kullanmaya çalışıyorum (Rusya'da yaşıyorum, burada sansürle ilgili bazı sorunlarımız var).

GCE'de VPN hakkında mini eğitim var , ancak OpenVPN ile değil, GCE içindeki 2 sunucu arasındaki ağ hakkında.

Debian'da OpenVPN ile VPN kurma hakkında başka bir öğreticiden tüm adımları attım, istemciden VPN'ye bağlanabiliyorum, ancak sonra bağlantıları açamıyorum (google'a ping bile yapamıyorum). Sunucuda her zamanki gibi her şeyi pingleyebilir ve indirebilirsiniz.

Linode üzerinde aynı kurulumla VPN var ve iyi çalışıyor. Dolayısıyla sorun GCE ağ yönlendirme veya güvenlik duvarı kurallarındadır.

Birçok varyantı denedim ama hiçbir şey işe yaramıyor. Lütfen ayarlara bakın ve neyi değiştirmem gerektiğini söyleyin.

// sorun çözüldüğünden yapılandırma satırları kaldırıldı //


IP yönlendirmeyi etkinleştirmenin bir yolu var mı? echo 1> / proc / sys / net / ipv4 / ip_forward
Alec Istomin

@AlecIstomin, evet, bitti. Linode üzerinde aynı kurulumla VPN var ve iyi çalışıyor. Dolayısıyla sorun GCE ağ yönlendirme veya güvenlik duvarı kurallarındadır.
OZ_

Belki GCE desteği isteyin? Bu, hızlı bir şekilde cevap verebilecekleri bir şey gibi görünüyor.
Bill Weiss

Destek planları için @BillWeiss fiyatı 150 $ / ay'dan başlıyor, ancak bu sorun hafta içinde çözülmezse, onlara ödeme yapacağımı düşünüyorum. Ayrıca düzeltmek için oDesk üzerinde birini bulmaya çalışacağım ve daha sonra bloguma öğretici yazacağım.
OZ_

odesk.com/jobs/~01c4b1438a64f31fdd - yardımcı olabilirseniz başvurmaktan çekinmeyin çocuklar.
OZ_

Yanıtlar:


7

Her şeyden önce, cevabı için @Shivox'a teşekkürler .

İşte hızlı nasıl yapılır:

  • . Tcp: 22 (mevcut ise) tcp: 9700 tcp: Ben ( " "Ağlar" sekmesine bakın) olarak ağ tercihlerini, izin veren kurallar eklemek ek ağ oluşturmak tavsiye 17.619 . 17.619 burada değişkendir - herhangi bir değişiklik onu İstediğiniz bağlantı noktası (aralık 9075-65534'tür) Sadece 3 kural ve 2 varsayılan rotaya ihtiyacınız var, başka bir şey yok.
  • "Compute Engine örneği oluştur" a gidin, "Gelişmiş seçenekleri göster" i tıklayın, bağlantı noktalarının yönlendirilmesine izin verin, sunucunun konumunu seçin.
  • Şimdi (konum seçtiğinizde), sunucuya statik IP ekleyin.
  • Ubuntu 14.04 resmini seçin (tam olarak bu sürüm).
  • Örnek oluştur
  • SSH ile bağlanın (en kolay yol - GCE panelinden tarayıcı içi aracı kullanın)
  • 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
  • Tarayıcıda açık https://instance_ip:9700
  • DB hakkında soru üzerine "Kaydet" i tıklayın
  • Giriş penceresinde pritunlkullanıcı adı ve şifre olarak kullan
  • Şimdi yönetici kullanıcısının kullanıcı adını ve şifresini değiştirin
  • Kuruluş, ardından 2 kullanıcı ekleyin (masaüstü ve mobil cihazlar için)
  • "Sunucular" sekmesinde "Sunucu ekle" yi tıklayın
  • İlk adımdaki bağlantı noktası numarasını ( örnek olarak 17619 ) ve tcp protokolünü kullanın.
  • Kuruluşu sunucuya ekle
  • Sunucuyu başlat
  • "Kullanıcılar" sekmesinde her iki kullanıcı için indirme tuşları (içinde ovpn dosyaları olan katran arşivleri).

İstemci olarak OS X için Viscosity ve iOS için OpenVPN connect kullanıyorum. Viskozite'de, "Ağ" sekmesinde "Tüm trafiği VPN bağlantısı üzerinden gönder" seçeneğini açın.


Unutmayın: Google Cloud Platform, 60 gün boyunca 300 ABD Doları ile ücretsiz deneme sürümü sunuyor.
OZ_

1
Ubuntu 14.04 üzerine Pritunl kurulum talimatları değişti: github.com/pritunl/pritunl#ubuntu-trusty
motobói 26:16

6

Ping, traceroute ... yapmanıza rağmen VPN üzerinden web'e göz alamama konusunu aşağıdaki iki yoldan biriyle çözebilirsiniz:

İlk olarak, 'proto udp' öğesini hem istemci hem de sunucu conf dosyalarındaki 'proto tcp' olarak değiştirerek UDP yerine TCP protokolünü kullanabilirsiniz.

İkincisi, 'dev tun'i hem istemci hem de sunucu conf dosyalarındaki' dev tap 'olarak değiştirerek tun yerine tap cihazını kullanabilirsiniz.

Sorunun ne olduğundan emin değilim, Google'ın sonundan beri bir sorun gibi görünüyor.


1
Kahramanımsın! Çok teşekkür ederim! TCP'ye geçmek hile yaptı. Ayrı bir cevapta "nasıl yapılır" ifadesinin tamamını genişleteceğim. Uzun zamandır rüya gerçek olduğunda bu duygu ... Teşekkürler!
OZ_

4

Google VPC'nin, source_ipharici IP'ye sahip bir VM'nin dahili IP'sinden başka paketleri bıraktığını lütfen unutmayın .

Bu doküman https://cloud.google.com/compute/docs/vpc/advanced-vpc belirtmektedir:

VPC ağı, örneğin üst IP adresini kaynak olarak bildirmek için IP üstbilgisini yeniden yazar. Örneğin harici bir IP adresi yoksa, çağrıya izin verilmez ve VPC ağı, göndereni bilgilendirmeden paketi bırakır.

Bu nedenle, openVPN'niz sadece diğer ağdan paketleri yönlendiriyorsa, source_ipmevcut herhangi bir VM'nin dahili IP'siyle eşleşmediği için paketler genel dahili ağa bırakılacaktır . Bu nedenle yerel ağınızdan ayrılan paketleri, örneğin VPN düğümünüzde NAT yapmanız gerekir.

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

OZ_ yanıtında bahsedilen "Pritunl", NAT otomatik olarak yapılandırdığı için çalışır.


3

Bu gerçekten bir cevap değil, ancak site sorunuzu bir yorum olarak eklememe izin vermedi.

Yine de, yukarıda detaylandırdığınız hemen hemen aynı yapılandırmaya sahibim (sunucudaki dnsmaq'ı zor yapılandırmadım)

Ne yazık ki, VPN beklendiği gibi çalışmıyor. Bir adresi çözebilir, bazı İnternet sunucularına ping atabilirim ve hatta VPN'ye bağlıyken tam bir iz bırakabilirim. Ancak tarayıcıyı açıp bir siteye gittiğimde bağlantı gerçekten yavaş. Bağlantıyı neyin etkileyebileceğini bilmiyorum, ama gerçekten garip bir sorun.

Belki Google'dan birileri neler olup bittiğini bilmemize yardımcı olabilir.

PS 1. Diğer insanların daha önce önerdiği gibi, ip yönlendirmenin etkin olup olmadığını kontrol edebilir misiniz? Benim için, net.ipv4.ip_forward değerinin /etc/sysctl.d üzerinde özel bir kural kullandıktan sonra yeniden başlattıktan sonra düzgün bir şekilde geri yüklendiğinden emin olmanın tek yolu.

Örneğin, aşağıdaki komutu kullanarak kuralı ekleyebilirsiniz:

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

PS 2. İletim sizin için işe yararsa, VPN'ye bağlıyken harici bir ana bilgisayara bir izleme yolunu test edebilir misiniz? Bunu yaptığımda var çıktı biraz garip (neden aynı IP birden fazla atlama var ????):

$ 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. Düzgün çalışıyor gibi görünen tek şey VPN, Internet'e erişmek için ana bilgisayarımdaki harici IP'yi kullanıyor

$ 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'ye bağlıyken artık ping atabileceğiniz ve izleyebileceğiniz duyduğuma sevindim. Şimdi, traceroute'unuzdan birinin sonucunu gönderebilir misiniz? Çıktının ilk satırlarını merak ediyorum çünkü paket en az ilk 8 atlayış için bir döngüye yönlendirilmiş gibi görünüyor (yine de bir ağ uzmanı değilim)
Mario

üzgünüm, işte burada: gist.github.com/jamm/028ae858a03e40495740 . Ve evet, garip görünüyor. Belki belirli bir rotaya ihtiyacımız var.
OZ_


1

Google bulutunda VM örneğiniz için IP yönlendirmeyi etkinleştirmeniz gerekir, aksi takdirde paketler VM'nize ulaşmaz. Bunun, VM'nizde net.ipv4.ip_forward = 1ayarlayabileceğinizden ayrı olduğunu unutmayın.

IP iletme, bir VM oluşturmadan önce yalnızca bir kez ayarlanabilir ve daha sonra değiştirilemez. Yeni bir VM için etkinleştirmek üzere tıklayın Management, security, disks, networking, sole tenancy: resim açıklamasını buraya girin

Ardından, Networkingsekmede tıklayın Network Interfaceve IP Yönlendirmeyi şu şekilde ayarlayın ON:

resim açıklamasını buraya girin


0

OpenVPN'in kendisi için trafiğe izin veren bir kural eklemeniz gerekir:

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

kural # 4 olarak mevcut
OZ_

0

Ağ Hakkında.

1) Konsolda OpenVPN Alt Ağından (ör. 10.8.0.0/24) gelen tüm trafiği etkinleştirin

2) Ağınıza Masquerade eklemenizi şiddetle tavsiye ederim

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

3) Çekirdekte paket yönlendirmeyi etkinleştirmeyi unutmayın

Bir kere

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

b) sonsuza dek /etc/sysctl.conf dosyasında:

 net.ipv4.ip_forward = 1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.