Tüm trafik için OpenVPN varsayılan ağ geçidi değil


21

İstemcimi OpenVPN çalıştıran bir VPS üzerinden tüm trafiği iletmeye çalışıyorum. Gördüğünüz gibi, hem etki alanlarına hem de ham IP adreslerine ping izin verir, ancak kıvrılma ve traceroute yoluyla yapılan gibi trafiğe hiçbir şey getirmez. VPN'ye bağlı olmadığında trafik düzgün çalışıyor.

Tüm bilgiler burada: https://pastebin.com/tGspNefn

Teşekkür ederim.

Aşağıdaki çözüm sayesinde çalışma yapılandırmaları:

Sunucu:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Müşteri:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 neden netmask 128.0.0.0?
Antony Gibbs

İşaret için teşekkürler DrDinosaur serverfault.com/questions/312860/...
Antony Gibbs

3
Bir dahaki sefere ilgili bilgileri çıkarın ve soruya ekleyin. Pastebin snippet'lerinin ömrü sınırlıdır.
MLu

Yanıtlar:


34

Çözümün iki parçası vardır:

1. Tüm trafiği tünele yönlendirin

En kolay çözüm - OpenVPN'in --redirect-gateway autolocalseçeneğini kullanın (veya yapılandırma dosyasına olarak koyun redirect-gateway autolocal.

2. OpenVPN sunucusundaki trafiği işleme

Tünel bittiğine göre, tüm trafik tünele giriyor ve tun0arayüzün sonunda sunucunun sonunda ortaya çıkıyor .

Çalışması için iki şeyi yapılandırmanız gerekir:

a. Paket yönlendirmeyi etkinleştir

Varsayılan olarak çoğu dağıtımda paket iletme devre dışıdır, bu nedenle tünel arabirimindeki paketler asla genel arabirime geçmez. Yönlendirmeyi aşağıdakilerle etkinleştirmeniz gerekir:

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

Test edildikten sonra değişikliği kalıcı hale getirin /etc/sysctl.conf

Ayrıca iptables, yönlendirilen trafiği engellemediğinden emin olun :

~ # iptables -I FORWARD -j ACCEPT

Bu test için yeterince iyi - üretimde güvenlik duvarı kurallarını biraz daha spesifik hale getirmek isteyeceksiniz, ancak bu kapsamın dışında.

b. Tünelden giden paketler NAT

Yönlendirme etkinleştirildiğinde, paketler varsayılan olarak kaynak adresleri değişmeden yönlendirilir, yani sizin durumunuzda 10.8.0.6- bu tür paketler ISS ağ geçidine bırakılır veya hedefe gönderilse bile yanıt asla geri dönüşü bulamaz. Bu özel adresler internette yönlendirilemez.

Çözüm, çıkış trafiğini NAT yapmaktır, yani özel 10.8.0.6adresi VPN sunucusunun genel IP'si ile değiştirin. Bu, yanıtların VPN sunucusuna ulaşmasını sağlar ve orada tünele geri yönlendirilir.

~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3. Test edin

Şimdi ping 8.8.4.4VPN istemcinizden deneyin . Bir cevap görmelisin. Değilse bize bildirin :)


Bu şimdi mükemmel çalışıyor. Yüksek kaliteli cevap için çok teşekkürler.
DrDinosaur

İstemci tarafında, client.conf dosyasına pull add ekleyin veya komut satırına --pull seçeneğini ekleyin, böylece istemci sunucu tarafından itilen yapılandırmayı kabul eder. Ayrıca istemci Windows Vista veya daha yeni bir sürümde UAC'yi devre dışı bırakırsa, istemcide çalışan openpn hizmeti rota ayarlayamaz.
Viktor

> b. NAT Tünelden giden paketler Bana yardımcı oldu.
FelikZ

Gerçekten FORWARD -j KABUL kuralının Sunucuyu tüm arabirimleri arasında açık bir yönlendirici yaptığını dikkate alın. Üretim sistemlerinde kullanılmamalıdır. Ama bir HowTo için temelde hızlı bir şekilde çalışmak için çok iyi bir talimat seti.
Sprinterfreak

Does Redirect all the traffic into the tunnelİstemci yapılandırmasında adımı?
uçak
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.