एसएसएच टनल पर डीएनएस


3

मैं अपने OSX सिस्टम को सेटअप करना चाहता हूं जैसे कि सभी नेटवर्क ट्रैफिक एक SSH सुरंग के माध्यम से किया जाता है।

मैंने इस उद्देश्य के लिए एक छोटी स्क्रिप्ट लिखी है, और ये इसके द्वारा निष्पादित कमांड हैं:

// setup tunnel
ssh -fN -D 1080 -p 22 user@remote

// start up redsocks
sudo redsocks -c /tmp/redsocks.conf -p /tmp/redsocks.pid

// forward all tcp traffic to tunnel
sudo ipfw add 0010 fwd 127.0.0.1,12345 tcp from me to any not dst-port 12345 not dst-port 1080 not dst-ip REMOTE_IP

मैं अपनी ssh-tunnel को http प्रॉक्सी बनाने के लिए redsocks का उपयोग करता हूं (ताकि मैं इसे ipcw के माध्यम से सभी tcp ट्रैफ़िक को अग्रेषित कर सकूं), redsocks.conf इस तरह दिखता है:

base {
    log_debug = on;
    log_info = on;
    log = "file:/tmp/redsocks.log";
    redirector = generic;
}
redsocks {
    local_ip = 127.0.0.1;
    local_port = 55660;
    ip = 127.0.0.1;
    port = 1080;
    type = socks4;
}

अब तक सब कुछ काम करने लगता है, मेरे OSX सिस्टम पर सभी TCP ट्रैफ़िक ssh सुरंग के माध्यम से किया जाता है, लेकिन समस्या UDP ट्रैफ़िक के साथ है और इसके कारण DNS क्वेरीज़ काम नहीं कर रही हैं।

मैं SSH सुरंग के माध्यम से काम करने के लिए अपने स्थानीय मशीन पर DNS कैसे प्राप्त कर सकता हूं?


आप इस प्रश्न पर एक नज़र डाल सकते हैं । यह आसान नहीं है .. SSH टनलिंग टीसीपी ट्रैफिक के लिए वास्तव में है।
हैवीड

चूंकि आप OSX पर हैं, इसलिए यह उत्तर आपकी मदद कर सकता है। हालांकि अत्यधिक जटिल लगता है।
थोड़ा

जवाबों:


1

आपकी ipfw …लाइन केवल TCP ट्रैफ़िक को अग्रेषित करती है। शायद निम्नलिखित पंक्ति जोड़ सकते हैं?

sudo ipfw add 0011 fwd 127.0.0.1,12345 \
                   udp from me \
                   to any not dst-port 12345 \
                          not dst-port 1080 \
                          not dst-ip REMOTE_IP

जोड़ना set -x(डिबगिंग के लिए) और set -e(यदि कोई भी कमांड विफल हो तो तुरंत विफल होना ) एक अच्छा विचार है ।

  • आम तौर पर एसएसएच के साथ tun/ को संदर्भित करने के लिए 'एसएसएच टनलिंग' शब्द का उपयोग करना चाहिए tap
  • पोर्ट-फ़ॉरवर्डिंग, सुरंग बनाने का एक विशिष्ट रूप है, लेकिन इसे अभी भी केवल इस संदर्भ में 'पोर्ट फ़ॉरवर्डिंग' के रूप में संदर्भित किया जाना चाहिए।
  • त्वरित तदर्थ नौकरियों को छोड़कर SSH टनलिंग (के रूप में -oTunnelऔर -oTunnelDevice) का उपयोग न करें ।
  • DNS टीसीपी को परिवहन के रूप में उपयोग कर सकता है। यह यूडीपी तक ही सीमित नहीं है, हालांकि यह पसंदीदा परिवहन है।

2

इसके बजाय sshuttle का उपयोग करें ? sshuttle डीएनएस और टीसीपी को सही ढंग से संभालने का दावा करता है, बिना इस राशि के - बिना किसी --dnsविकल्प के।

IME SOCKS कुछ पुराना और अप्रभावित लग रहा था। और मैं वास्तव में ipfw और redsocks के इस उपयोग को नहीं समझता।

हालाँकि, मुझे लगता है कि SOCKS4 DNS को टनलिंग का समर्थन नहीं करता है, इसलिए मुझे आश्चर्य नहीं है कि आपको समस्या हो रही है। SOCKS के बाद के संस्करण इसका समर्थन करते हैं, इसलिए आप इसे देख सकते हैं। और जाहिरा तौर पर SSH SOCKS5 का समर्थन कर सकता है


1

इसके अलावा जो आप पहले से उपयोग कर रहे हैं, sSH सभी आईपी ट्रैफिक को टनलिंग करने की अनुमति देता है, नियोजित लेयर 4 प्रोटोकॉल से इंडिपेंडेट। आपका दूरस्थ सर्वर होना चाहिए PermitTunnel yesऔर ग्राहक को Tunnelनिर्देश का उपयोग करके एक सुरंग का अनुरोध करना चाहिए । फिर आप उस नए लिंक को अपने डिफ़ॉल्ट गेटवे के रूप में उपयोग कर सकते हैं। यहाँ सुरंग के लिए विस्तृत निर्देश देखें


क्या आप जानते हैं कि अगर मैं विंडोज पर बिटवीस से WinSSHD सर्वर के साथ ऐसा कर सकता हूं?
सिहान केसर

@CihatKeser: मुझे नहीं लगता, मुझे डर है। लेकिन जैसा कि आप इसके लिए पैसे दे रहे हैं, मुझे उम्मीद है कि उनके पास इस सवाल का जवाब देने के लिए एक समर्थन होगा।
user1129682
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.