Belirli adresleri bir tünelden nasıl yönlendiririm?


14

Yalnızca sunucumun bulunduğu alt ağdan erişebileceğim belirli web siteleri / hizmetler var (tipik intranet senaryosunu düşünün). Bu adreslere giden trafiği bir SSH tüneli üzerinden şeffaf bir şekilde yönlendirmenin bir yolu var mı?

Aşağıdaki kurulumu düşünün:

Dizüstü bilgisayarım ev ağına bağlı. İps X ve Y'deki hizmetlere doğrudan erişemez. Aslında bu hizmetlere erişebilen bir alt ağda bulunan bir sunucuya SSH tüneli var.

Tüm trafiğimi sunucu üzerinden gönderecek tüm VPN çözümünü çalıştırmak zorunda kalmadan, bu tünelden geçmek için X ve Y alt ağlarına giden tüm trafiği bir şekilde otomatik olarak kapsülleyebilir miyim? Başka bir deyişle: başka bir alt ağa giden tüm trafik, sunucudan geçmeden (tüneli kullanarak) doğrudan dizüstü bilgisayardan devam etmelidir.

Yanıtlar:


6

Yönlendirme tablosunda trafiğin yönlendirileceği arayüzü belirtebilirsiniz:

sudo route add <host.com> -interface <ppp0>

Host.com, arayüz üzerinden erişmek istediğiniz ana bilgisayar adı veya ip ve ppp0, vpn'niz için gösterilen bağlantı tanımlayıcıdır. ifconfig komutla .


2
Not: en azından ubuntu'da -interfacebir seçenek değildir, routebu nedenle yukarıdaki öneri bir kullanım hatası verir. Ayrıca bu OP'nin istediği gibi ssh tüneli üzerinden nasıl yönlendirilir?
arielf

3

OpenSSH'nin son sürümleri, gerçek VPN desteği için tun / tap ağ cihazlarını destekler. Bazı temel belgeler için https://help.ubuntu.com/community/SSH_VPN adresine bakın (açıkça Ubuntu için tasarlanmıştır, ancak temel ilke başka bir yerde geçerlidir.)


Bunun hem dizüstü bilgisayarda hem de ağ geçidi ana bilgisayarında kök ayrıcalıkları gerektirdiğini unutmayın.
Riccardo Murri

1

Feragatname: Açıklayacağım şeyi gerçekten test etmedim ve gerçekten de tamamen yanlış olabilir, ancak sorunuz o kadar ilgi çekicidir ki, bir cevap hazırlamak için ayarlamaya karşı koyamayacağım. :-) Ayrıca, burada kurulum bazı bağlıdıriptables yalnızca Linux'ta olabilecek işlevlere .

Dizüstü bilgisayarınızdan X1 sunucusu üzerindeki belirli bir P1 bağlantı noktasına, X2 sunucusu üzerindeki P2 numaralı bağlantı noktasına bağlamak istediğinizi varsayarsak - TCP trafiğini bir SSH tüneli üzerinden bu belirli sunucu + bağlantı noktası çiftlerine nasıl yönlendireceğinizi açıklayacağım. Not: X1, X2 vb. IP adresleri, ağ geçidi ana bilgisayarından (SSH'ye girdiğiniz adres) görüldüğü gibi sunucunun IP adresleridir.

  1. Kullanılmayan bazı yerel bağlantı noktaları L1 (örn. 10000), L2 (örn. 10001) vb. Seçin. L1, L2, ... bağlantı noktaları tamamen farklı olmalı ve sayıları farklı (Xn, Pn) sunucu sayısına eşit olmalıdır + liman çiftleri.

  2. kullanım iptablesXn: Pn'ye yönlendirilen paketleri localhost: Ln üzerine yönlendirmek için

    iptables -t nat -A ÇIKIŞ -p tcp -d X1 --dport P1 -j DNAT - hedef yerel ana bilgisayar: L1 iptables -t nat -A ÇIKIŞ -p tcp -d X2 --dport P2 -j DNAT - hedef yerel ana bilgisayar: L2

  3. Şimdi -Lyerel ağdan trafiği tünelleme seçeneğini kullanarak ağ geçidine SSH : Ln - (Xn, Pn):

    ssh gateway.server -L yerel ana bilgisayar: L1: X1: P1 -L yerel ana bilgisayar: L2: X2: P2 ...

Misal:

# access webserver.intranet (port 80) through localhost:10080
iptables -t nat -A OUTPUT -p tcp -d webserver.intranet --dport 80 -j DNAT --to-destination localhost:10080
ssh gateway.server -L locahost:10080:webserver.intranet:80

Uyarılar:

  • sadece TCP için çalışıyor, eğer çalışıyorsa ...

  • birden fazla sunucuya erişmek istiyorsanız, muhtemelen bir VPN kurmak daha az iş demektir

  • -Dbir SOCKS proxy'sini simüle etmek ve bu sayede tüm trafiğinizi tünellemek için SSH seçeneğini kullanmak daha kolay olabilir .


Aslında işe yarıyor! (Ne yazık ki, yerel ana bilgisayardan değil, sanal bir makineden kaynaklanan trafiği yönlendirmek istediğim özel
durumuma uymuyor

1

X ve Y alt ağları, tüm trafiğimi sunucu üzerinden gönderecek tüm VPN çözümünü çalıştırmak zorunda kalmadan, bu tünelden geçmek için mi?

İstediğiniz bir VPN tanımıdır.

Bir VPN

tüm [trafiğiniz] trafiği sunucu üzerinden gönderilsin mi?

Öyleyse, düzgün ayarlanmamıştır.

Tünel veya VPN üzerinden erişmeye çalıştığınız herhangi bir makinenin tanım gereği İnternet üzerinden erişilemediği varsayılmaktadır. Bu nedenle, yalnızca gerekli, İnternet dışı yönlendirilebilir adres VPN'ye yönlendirilmelidir.

Daha karmaşık bir durumunuz varsa, sadece makine X ve Y ve başka hiçbir şey gibi. BT personeliniz bunları sizin için bir alt ağa koyabilir. Sonra istemci bilgisayarınızda, yalnızca bu alt ağı VPN üzerinden yönlendirin.


0

Tüm trafiğimi sunucu üzerinden gönderecek tüm VPN çözümünü çalıştırmak zorunda kalmadan, bu tünelden geçmek için X ve Y alt ağlarına giden tüm trafiği bir şekilde otomatik olarak kapsülleyebilir miyim?

İlk bakışta bu biraz garip çünkü VPN sizin için yapacak. SSH, noktadan noktaya bir mesele olma eğilimindedir; yerel makinenizdeki bir bağlantı noktasını başka bir yerdeki uzak makinenin bağlantı noktasına bağlamanızdır; gerçekten düşündüğünüz trafik türü için tasarlanmamıştı.

Başka bir deyişle: başka bir alt ağa giden tüm trafik, sunucudan geçmeden (tüneli kullanarak) doğrudan dizüstü bilgisayardan devam etmelidir.

Yine, bir VPN bununla ilgilenir.

Güvenli VPN trafiği elde etmek için "ağır" bir çözümden endişe ediyorsanız (yani, çok karmaşık olacağı için maymunla oynamak istemezsiniz) , tam olarak açıkladığınız şeyi yapacak olan OpenVPN'e bakmalısınız . Sadece tüm trafiği kapsamayacak, aynı zamanda sadece bu alt ağlar için hedeflenen trafiğin VPN borusu üzerinden yolculuk yapmasını sağlayacak şekilde yapılabilir. Yerel ve uzak makinelerde bir metin dosyasını düzenlemeniz gerekeceği konusunda sizi uyaracağım, ancak çalışmaya başlamak oldukça kolay.

Amaçlarınız için, ortadaki partinin (bir sunucu) trafiğinizi görmesini istemediğiniz için, VPN'yi doğrudan makinenizden uzak makineye bağlanacak şekilde ayarlayabilirsiniz. Yönlendirilen paketler dizüstü bilgisayarınızdan ayrılmadan önce şifrelenir, böylece% 100 uçtan uca kapsama alanına sahip olursunuz.


0

Diğerlerinin söylediği gibi, "tüm alt ağlara giden trafiği kapsüllemeniz" gerekiyorsa muhtemelen VPN kullanmak istersiniz.

Ancak, yalnızca birkaç hizmete erişmek için SSH'nin yerel bağlantı noktası yönlendirme özelliğini kullanmak isteyebilirsiniz, bu gerçekten basittir. Örneğin, (dizüstü bilgisayarınızdan) girerseniz:

ssh -N -L 3333:localhost:2222 jump_box

Sonra bağlanırken localhost:2222, sadece bağlanma gibi olacak localhost:2222den jump_box. Aynı anda birden çok L seçeneği kullanabilir ve ssd_config on jump_boxizin veriyorsa diğer ana bilgisayarlardaki hizmetlere bağlanabilirsiniz .

Sen kullanabilirsiniz autosshile systemdveya benzeri hazır ve çalışır tünelleri tutmak.

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.