VPN İstemcisine bağlantı noktası ileri?


21

Biraz yapbozla karşılaştım ve bir çözüm bulmakta pek şansım olmadı. Şu anda (maalesef) Verizon 3G ile internete bağlıyım. Gelen trafiği filtreliyorlar, bu nedenle bağlantı noktalarını kabul etmek için bağlantı noktalarını açmam mümkün değil.

Şu anda linode.com'da bir Linux sanal makinem var ve düşünce, pptpdbazı iptablesbağlantı noktası yönlendirmelerini yüklemek ve yapmaya çalışmak için aklıma geçti . Ben var pptpdyüklenmiş ve benim ev makine mutlu bağlanır. Bununla birlikte, bazı genel bilgiler:

Sunucu (Debian) WAN IP: eth0 üzerinde xxxx - pptpd IP: ppp0 üzerinde yyy1 - İstemci VPN IP'si: yyy100

Delirmediğimi doğrulamak için, sunucudan istemcideki açık bağlantı noktalarına bazı bağlantılar denedim ve istemci bağlantıları VPN IP üzerinden kabul etti.

Ne yapmak istiyorum budur:

İnternet -> WAN IP: Bağlantı Noktası -> İstemci VPN IP'sine Yönlendirme: Bağlantı Noktası

Örneğin, istemcimde 6000 numaralı bağlantı noktası açık olsaydı, bir kişi xxxx: 6000'e telnet yapabilir ve sunucu bunu yakalar ve 192.168.3.100:6000'e iletir.

En az 20 farklı Googled up iptablesyapılandırmasını denedim ve hiçbiri henüz çalışmadı. Herhangi bir fikri, hatta farkında bile olamayacağım tamamen farklı bir yaklaşımı var mı? Buradaki amaç, korkunç bir güvenlik duvarı bağlantısını, tercihen hem TCP hem de UDP trafiğini dinlemek.

Yanıtlar:


25

Bunu yapmak için VPN sunucunuzda (Linode) üç şey yapmanız gerekir:

  1. IP yönlendirmeyi etkinleştirmelisiniz:

    sysctl -w net.ipv4.ip_forward=1
    
  2. Bağlantı noktasını iletmek için NAT hedefini (DNAT) ayarlayın. Muhtemelen bunu zaten anlamışsınızdır, çünkü bu standart bağlantı noktası yönlendirme şeyleridir, ancak tamlık için:

    iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
    
  3. VPN istemcinizin bakış açısından, bağlantı VPN sunucusundan gelecek şekilde kaynak NAT (SNAT) kurun:

    iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
    

SNAT'a ihtiyaç duymanızın nedeni, aksi takdirde VPN istemcinizin dönüş paketlerini, VPN üzerinden değil, varsayılan ağ geçidi (yani Verizon 3G) aracılığıyla bağlantıyı başlatan ana bilgisayara (zzzz) doğrudan göndermesidir. Böylece, dönüş paketlerindeki kaynak IP adresi xxxx değil Verizon 3G adresiniz olacaktır. Bu, zzzz gerçekten xxxx bağlantısını başlattığından her türlü soruna neden olur.

Bağlantı noktası yönlendirme ayarlarının çoğunda, bağlantı noktası yönlendirmesini gerçekleştiren ana bilgisayar aynı zamanda hedef ana bilgisayar için varsayılan ağ geçidi (örn. Ev yönlendiricisi) olduğu için SNAT gerekmez.

Ayrıca, 6000 numaralı bağlantı noktasını farklı bir bağlantı noktasına iletmek istiyorsanız (7000 diyelim), SNAT kuralının 6000 değil 7000'de eşleşmesi gerektiğini unutmayın.


Merhaba AGWA, Yanıtınız için teşekkürler. Zaten ip_forwarding vardı ve ilk başta olmasa da kurallarınız mükemmel çalıştı. Sorun (benim iptables noobness içinde) ben iptables -F nat girişleri temizlemek vermedi fark etmedi ve iptables -L onları listeleme değildi oldu. Onları düzgün bir şekilde nasıl listeleyeceğimizi anladıktan sonra daha önce denemelerden birkaç çakışan girdi fark ettim. Kurallarınızı yıkadıktan ve denedikten sonra mükemmel çalışıyor. Hızlı bir soru olsa da, kurallarınızda tcp belirtin. Bunu "tümü" olarak değiştirmek hem TCP / UDP trafiği için çalışır mı?
Vile Brigandier

Rica ederim! (Bu arada, iptables-saveiptables kurallarını göstermek için kullanmayı seviyorum - çıktı insan tüketimi için tasarlanmamış olsa da, hala okunabilir ve tüm iptables kurallarınızı gösteriyor.) Hayır, ne yazık ki orada "tümünü" kullanamazsınız, çünkü --dportsadece aslında bağlantı noktaları olan protokollerle çalışır ("tümü", bağlantı noktası kavramına sahip olmayan ICMP'yi içerir). TCP ve UDP için ayrı kurallara ihtiyacınız olacaktır.
AGWA

Iptables-save ipucu için teşekkürler. Her şey hem TCP hem de UDP için beklendiği gibi çalışır. Şerefe.
Vile Brigandier

2
Bu cevaba bir güncelleme, iproute2 ile aslında VPN istemcinizi 2 ağ geçidine sahip olacak şekilde ayarlayabilir ve DNAT trafiğini VPN üzerinden yönlendirebilirsiniz. SNAT kullanmak istemiyorsanız ve tüm trafiğin vpn sunucusundan geldiği görülüyorsa bu yararlıdır. thomas-krenn.com/tr/wiki/Two_Default_Gateways_on_One_System bunu nasıl ayarlayacağınızla ilgili bilgiler içerir.
PressingOnAlways

Ufw'de 8080'e izin vermiş olmama rağmen ufw devre dışı bırakıldığı sürece benim için çalışıyor, ancak ufw'yi etkinleştirir etkinleştirmez, bu yönlendirme işleri çalışmıyor .. herhangi bir fikir?
Sudhir N

3

Ben de bu sorunu vardı ve saatlerce çözmeye çalıştım .. İşte benim çözüm:

  • VPNClientAynı ile birden fazla vardı IPAddress. Bu yüzden her birine bir statik verdimIPAddress

İstemci komut dosyalarının depolanması gereken bir dizin tanımlayın, örneğin / etc / openvpn / staticclients ve dizini oluşturun

mkdir /etc/openvpn/staticclients

Bu dizini sunucudaki openvpn configfile'ınıza seçenek olarak ekleyin:

client-config-dir /etc/openvpn/staticclients

Her istemci için bir dosya oluşturmanız gerekir. Dosya adı common name, istemcinin sertifikasında belirtilen öznitelikle eşleşmelidir . Bu komut CN'yi bilgisayar sertifikasından alır:

Bu örnek, IPAddress10.1.134.110/10.1.134.109'u TESTCLIENT ile İstemciye common name iletir ve ayrıca 10.1.135.0 alt ağı için ek bir yol zorlar.

cat /etc/openvpn/staticclients/TESTCLIENT

ifconfig-push 10.1.134.110 10.1.134.109
push "route 10.1.135.0 255.255.255.0 10.1.134.62"
sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -p tcp --dport 28006 -j DNAT --to 10.1.134.110

2

Sunucuların çoğunda ip yönlendirme varsayılan yapılandırmada devre dışıdır. Gelen bağlantıları VPN'niz üzerinden yeniden yönlendirmek istiyorsanız etkinleştirmeniz gerekir.

Bunu dene:

sysctl -w net.ipv4.ip_forward = 1

Yani iptables yapılandırmasına ek olarak.


0

Ulaşmak istediğiniz şey (muhtemelen) pptpdveya OpenVPN ve iptables ile çok mümkündür , ancak bu kullanım durumu için tentürü daha iyi bir aday olarak bulabilirsiniz. Sadece okumak bu tam olarak bu kullanım şeklini nasıl kurulum Tınç ile anlatmaktadır. pptdpVeya OpenVPN kısmına (potansiyel olarak daha basit) bir alternatiftir . Sonra iptables için tam olarak aynı kurallara ihtiyacınız olacaktır.

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.