Yanıtlar:
Bu küçük kılavuz , UNDP benzeri işletim sistemlerinde standart olan araçları (ssh, nc, mkfifo) kullanarak SSH üzerinden UDP trafiğini nasıl göndereceğinizi açıklar.
SSH bağlantısı üzerinden UDP tünellemesi gerçekleştirme
Adım adım SSH bağlantınızla bir TCP ileri port açın
Yerel makinenizde (yerel), uzaktaki makineye (sunucuya) SSH ile bağlanın, ek -L seçeneğiyle SSH, TCP bağlantı noktası ileri ile:
local# ssh -L 6667:localhost:6667 server.foo.com
Bu, yerel makinenizin 6667 numaralı bağlantı noktasında bulunan TCP bağlantılarının server.foo.com adresindeki 6667 numaralı bağlantı noktasına güvenli kanal üzerinden iletilmesini sağlar. TCP'yi sunucuda UDP'ye iletme
Sunucuda, 6667 numaralı TCP bağlantı noktasında, belirli bir IP'nin UDP bağlantı noktası 53'e veri iletecek olan bir dinleyiciyi açıyoruz. Benim gibi DNS yönlendirmesi yapmak istiyorsanız, /etc/resolv.conf içinde bulacağınız ilk ad sunucusunun IP'sini alabilirsiniz. Ama önce, bir beşlik yaratmamız gerekiyor. İkili, iki kanal arasında iki yönlü iletişim kurmak için gereklidir. Basit bir kabuk borusu yalnızca sol işlem 'standart çıktıyı sağ işlem' standart girdisine iletir.
server# mkfifo /tmp/fifo
server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo
Bu, sunucunun 6667 numaralı bağlantı noktasındaki TCP trafiğinin 192.168.1.1'in 53 numaralı bağlantı noktasındaki UDP trafiğine yönlendirilmesine ve yanıtların geri gelmesine olanak sağlar. UDP'yi makinenizde ileri TCP'ye ayarlamak
Şimdi, yerel makinede yapılanların tam tersini yapmamız gerekiyor. UDP bağlantı noktası 53'ü bağlamak için ayrıcalıklı erişime ihtiyacınız var.
local# mkfifo /tmp/fifo
local# sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo
Bu, yerel makinenin 53 numaralı bağlantı noktasındaki UDP trafiğinin, yerel makinenin 6667 numaralı bağlantı noktasındaki TCP trafiğine iletilmesine olanak sağlar. Yerel DNS sunucunuzun tadını çıkarın :)
Şimdi muhtemelen tahmin ettiğiniz gibi, yerel makinede bir DNS sorgusu gerçekleştirildiğinde, örneğin yerel UDP bağlantı noktası 53'te, yerel TCP bağlantı noktası 6667'ye, ardından sunucunun TCP bağlantı noktası 6667'ye, ardından sunucunun DNS sunucusuna iletilir , 192.168.1.1'deki 53 numaralı UDP bağlantı noktası. Yerel makinenizde DNS hizmetlerinden yararlanmak için, aşağıdaki satırı /etc/resolv.conf dosyasına ilk ad sunucusu olarak yerleştirin:
nameserver 127.0.0.1
Bu örnek (John'un cevabının aynı şeyi farklı bir yere işaret ettiğini düşünüyorum), başka bir makinenin UDP / DNS servislerine TCP / SSH bağlantısı üzerinden nasıl erişileceğini açıklar.
Yerel UDP / 53 trafiğini TCP'ye, ardından SSH port yönlendirme mekanizmasıyla TCP trafiğini diğer makineye, ardından TCP'yi diğer ucunda UDP / 53'e yönlendireceğiz.
Genellikle, openvpn ile yapabilirsiniz.
Ama burada, basit araçlarla yapacağız, yalnızca openssh ve netcat.
Bu sayfanın sonunda, ' socat
'
ifadesiyle yapılan başka bir yorum , Aynı UDP / DNS erişimi,
Sunucu tarafı:
socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53
Müşteri tarafı:socat udp4-listen:53,reuseaddr,fork tcp:localhost:5353
Daha fazlası için socat örneklerine bakın .
ssh orig_strm_src socat udp4-listen:4003,reuseaddr,fork STDOUT| socat STDIN udp-sendto:localhost:4003
SSH (en azından OpenSSH) basit VPN'leri destekliyor. İstemcideki -w
veya Tunnel
seçeneğini kullanarak, her iki uçta da, herhangi bir IP trafiğini iletmek için kullanılabilecek ssh
bir tun
cihaz oluşturabilirsiniz . (Ayrıca bkz Tunnel
. Kılavuzdaki sayfa ssh_config(5)
.) Bunun her iki uçta da OpenSSH (ve muhtemelen root yetkileri) gerektirdiğine dikkat edin.
ip tuntap add
.
tun
şu şekildedir: Cihazı sudo ip tuntap add mode tun
kullanırken hiç ama -w
: böyle seçeneği ssh $Server -w $port
alıyorum Tunnel device open failed. Could not request tunnel forwarding.
Neyi yanlış yapıyorum?
Veya basit bir komutla basitçe ssf (bu kullanım durumunu ele almak için tasarlanmış) kullanabilirsiniz:
Müşteri tarafı:
#>./ssfc -U 53:192.168.1.1:53 server.foo.com
Bu komut, yerel bağlantı noktası 53'ü (dns) 192.168.1.1 bağlantı noktası 53'e, localhost ve server.foo.com arasındaki güvenli bir tünel üzerinden yönlendirir.
Bir ssf sunucusuna ihtiyacınız olacaktır ( - veya ssh sunucunuzun yanında - yerine ):
#>./ssfs
Bu arada, ssf'nin hem istemci hem de sunucu tarafı Windows / Linux / Mac'te çalışıyor. Bu bir kullanıcı uygulamasıdır, bu nedenle tun / tap veya VPN gerekmez.
53 numaralı bağlantı noktasını yönlendirmek için, kullandığınız araç ne olursa olsun, yönetici ayrıcalıklarına ihtiyacınız olacaktır.
Daha fazla bilgi için, ayrıntıları kullanın, dava kullanın veya indirin: https://securesocketfunneling.github.io/ssf/
Ben alamadım nc
SNMP istemcileri yeni bir kaynak UDP bağlantı noktasını seçerek devam çünkü, SNMP için çalışmak ve tek seferde birçok etkin olabilir.
Bunun yerine, SNMP kullanarak socat
bu blog gönderisinde nasıl yapılacağını açıklayan bir yazı yazdım . Temel olarak, iki terminal kullanarak, genel bakıştan başlayarak:
Terminal bir:
client$ ssh -L 10000:localhost:10000 server
server$ socat -T10 TCP4-LISTEN:10000,fork UDP4:switch:161
Bu, 10000 numaralı TCP bağlantı noktasının SSH iletimini oluşturur ve sunucuda socat'ı çalıştırır. Anahtarın IP adresinin socat komut satırında “anahtar” olarak belirtildiğine dikkat edin.
Terminal iki:
client$ sudo socat UDP4-LISTEN:161,fork TCP4:localhost:10000
Bu müşteri üzerinde socat kurar. Bunu yapmalı.