এসএসএইচ সুড়ঙ্গ মাধ্যমে ইউডিপি ট্রাফিক


62

শিরোনাম অনেক সুন্দর এটি অঙ্ক আপ। আমি একটি এসএসএইচ সুড়ঙ্গ মাধ্যমে UDP ট্রাফিক পাঠাতে চাই। বিশেষত, আমি টানেলের মাধ্যমে UDP প্যাকেট পাঠাতে সক্ষম হব এবং সার্ভারটি অন্যদিকে আমাকে তাদের পাঠাতে সক্ষম হবেন। আমি জানি কিভাবে টিসিপি সংযোগের জন্য এটি করা যায়। এটা কি ইউডিপি দিয়ে সম্ভব?

উত্তর:


34

এই ছোট গাইড ইউনিক্সের মত অপারেটিং সিস্টেমে স্ট্যান্ডার্ডগুলি (এসএসসি, এনসি, এমকিএফফো) সহ যে সরঞ্জামগুলি ব্যবহার করে এসএসএইচ মাধ্যমে ইউডিপি ট্র্যাফিক পাঠাতে হয় তা আপনাকে বলে।

একটি এসএসএইচ সংযোগ মাধ্যমে UDP টানেলিং সঞ্চালন

ধাপে ধাপে আপনার এসএসএইচ সংযোগের সাথে একটি টিসিপি ফরওয়ার্ড পোর্ট খুলুন

আপনার স্থানীয় মেশিনে (স্থানীয়) এসএসএইচ দ্বারা দূরবর্তী মেশিন (সার্ভার) এর সাথে সংযোগ করুন, অতিরিক্ত -ল বিকল্পের সাথে যাতে SSH টিসিপি পোর্ট-ফরওয়ার্ড সহ:

local# ssh -L 6667:localhost:6667 server.foo.com

এটি আপনার স্থানীয় মেশিনের পোর্ট নম্বর 6667 টিতে টিসিপি সংযোগগুলিকে নিরাপদ চ্যানেলের মাধ্যমে server.foo.com এ পোর্ট নম্বর 6667 এ ফরোয়ার্ড করার অনুমতি দেবে। সার্ভারে UDP ফরওয়ার্ড করার জন্য টিসিপি সেটআপ করুন

সার্ভারে, আমরা টিসিপি পোর্ট 6667 এ একটি শ্রোতা খুলি যা নির্দিষ্ট IP এর UDP পোর্ট 53 তে তথ্য পাঠাবে। যদি আপনি আমার মত DNS ফরওয়ার্ডিং করতে চান তবে আপনি /etc/resolv.conf এ পাবেন প্রথম নাম সার্ভারের আইপি নিতে পারেন। কিন্তু প্রথমে, আমরা একটি ফিফ তৈরি করতে হবে। দুই চ্যানেলের মধ্যে দুই-উপায় যোগাযোগের জন্য ফিফো প্রয়োজনীয়। একটি সহজ শেল পাইপ শুধুমাত্র বাম প্রক্রিয়া 'সঠিক প্রক্রিয়া মান আউটপুট' স্ট্যান্ডার্ড ইনপুট যোগাযোগ করতে হবে।

server# mkfifo /tmp/fifo
server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo

এটি সার্ভারের পোর্ট 6667 তে টিসিপি ট্র্যাফিককে 19২.168.1.1 এর পোর্ট 53 তে ইউডিপি ট্র্যাফিকে প্রেরণ করার অনুমতি দেবে এবং প্রতিক্রিয়া ফিরে আসবে। আপনার মেশিনে UDP টিসিপি ফরওয়ার্ড করুন

এখন, আমাদের স্থানীয় মেশিনে উপরের কাজটির বিপরীত কাজ করতে হবে। আপনি ইউডিপি পোর্ট 53 বাঁধাই priviledged এক্সেস প্রয়োজন।

local# mkfifo /tmp/fifo
local# sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo

এটি স্থানীয় মেশিনের পোর্ট 53 এ ইউডিপি ট্র্যাফিককে স্থানীয় মেশিনের পোর্ট 6667 এ টিসিপি ট্র্যাফিকে পাঠানোর অনুমতি দেবে। আপনার স্থানীয় DNS সার্ভার উপভোগ করুন :)

আপনি সম্ভবত এটি এখন অনুমান করেছেন, যখন স্থানীয় মেশিনে একটি DNS ক্যোয়ারী সঞ্চালিত হবে, উদাঃ। স্থানীয় ইউডিপি পোর্ট 53 এ, এটি স্থানীয় টিসিপি পোর্ট 6667, তারপরে সার্ভারের টিসিপি পোর্ট 6667 এ, তারপর সার্ভারের DNS সার্ভারে, 19২.168.1.1 এর UDP পোর্ট 53 তে পাঠানো হবে। আপনার স্থানীয় মেশিনে DNS পরিষেবাদি উপভোগ করার জন্য নিম্নলিখিত লাইনে আপনার /etc/resolv.conf- এ প্রথম নামবস্তুরূপে রাখুন:

nameserver 127.0.0.1

28
এই সমাধান নিরাপদ নয়। টিসিপি প্রবাহগুলি বার্তা সীমানা সংরক্ষণের নিশ্চয়তা দেয় না, তাই কোনো একক UDP ডাটাগ্রাম কোনও প্রোটোকল ভেঙ্গে অংশে বিভক্ত করা যেতে পারে।
Juho Östman

2
6667 (ম্যান এসএসএইচ উদাহরণ থেকে) এর পরিবর্তে পোর্ট 1153 ব্যবহার করাও ভালো হতে পারে, যা আইআরসি দ্বারা ব্যবহৃত হয়।
phil pirozhkov

1
@ জুহোস্টস্টম্যান এই পিটফলটি তুলে ধরার জন্য ধন্যবাদ। সমস্যা সম্পর্কে সচেতন হোন ... আপনি কি অ্যাক্রোজকে সমাধান করেছেন? ছোট যথেষ্ট বার্তা কাজ করার জন্য এটি একটি উপায় হতে হবে?
humanityANDpeace

4
সমাধানটি টিসিপি প্রবাহের মাধ্যমে প্রেরিত হওয়ার আগে প্রতিটি প্যাকেটে একটি দৈর্ঘ্য প্রারম্ভ করতে হবে এবং এর থেকে আসল প্যাকেটগুলি পুনর্নির্মাণ করতে হবে। এটি করার জন্য একটি সি স্ক্রিপ্ট লিখতে সহজ হবে, তবে সহজলভ্য সমাধান বিদ্যমান থাকলে আমি নিশ্চিত নই। বাস্তবে, টিসিপি সাধারণত এই ক্ষেত্রে বার্তা সীমানা সংরক্ষণ করে বলে মনে হয়, কিন্তু যে কোন সময় অদ্ভুত ব্যর্থতা ঘটতে পারে।
Juho Östman

আমি এই সঙ্গে অন্য সমস্যা সম্মুখীন: পাইপ এবং ফিফ buffered হয় তাই ফ্রেম সীমানা হারিয়ে যায়। তাই অনেক ইউডিপি ফ্রেম এক টিসিপি ফ্রেমে সংহত করা যায়।
Julio Guerra

21

এই উদাহরণ (আমার মনে হয় জন এর উত্তর ভিন্ন স্থানে একই জিনিস নির্দেশ করে), একটি টিসিপি / এসএসএইচ সংযোগে অন্য মেশিনের ইউডিপি / DNS পরিষেবাদি কিভাবে অ্যাক্সেস করবেন তা বর্ণনা করে।

আমরা স্থানীয় ইউডিপি / 53 টি ট্রাফিক টিসিপি, তারপর এসএসএইচ-এর পোর্ট-ফরওয়ার্ডিং মেকানিজমের সাথে অন্য মেশিনে টিসিপি ট্র্যাফিক, তারপর অন্য টিসিপি-তে ইউডিপি / 53 এ এগিয়ে যাব।
সাধারণত, আপনি openvpn দিয়ে এটি করতে পারেন।
কিন্তু এখানে, আমরা সহজ সরঞ্জাম, শুধুমাত্র openssh এবং netcat সঙ্গে এটি করব।

যে পৃষ্ঠার শেষে, একটি রেফারেন্স সঙ্গে আরেকটি মন্তব্য ' socat '
একই UDP / DNS অ্যাক্সেস তৈরি করা হয়,

সার্ভার পার্শ্ব: socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53
মক্কেলের পক্ষে: socat udp4-listen:53,reuseaddr,fork tcp:localhost:5353

পড়ুন সামাজিক উদাহরণ আরো বেশী.


3
এই এক গ্রহণযোগ্য উত্তর চেয়ে আমার জন্য অনেক দরকারী মনে হয়। আমি ভিডিও স্ট্রিম (টিএস / ইউডিপি) একটি unidirectional পুনর্নির্দেশ প্রয়োজন ... ssh orig_strm_src socat udp4-listen:4003,reuseaddr,fork STDOUT| socat STDIN udp-sendto:localhost:4003
nhed

FWIW, আমি আরো লিখেছেন আমার হোম পেজ বিস্তারিত গাইড কিভাবে UDP ফরওয়ার্ডিং জন্য এসএসএইচ উপর socat সেট আপ বর্ণনা। এটি একটি উদাহরণ হিসাবে SNMP ব্যবহার করে।
Peter V. Mørch

19

এসএসএইচ (অন্তত OpenSSH) সহজ ভিপিএনগুলির জন্য সমর্থন করেছে। ব্যবহার করে -w অথবা Tunnel বিকল্প ssh ক্লায়েন্ট, আপনি একটি তৈরি করতে পারেন tun উভয় প্রান্তে ডিভাইস, যা কোনও আইপি ট্র্যাফিক ফরওয়ার্ড করার জন্য ব্যবহার করা যেতে পারে। (আরো দেখুন Tunnel ম্যানুয়াল পৃষ্ঠাতে ssh_config(5)।) মনে রাখবেন এই উভয় প্রান্তে OpenSSH (এবং সম্ভবত রুট সুবিধা) প্রয়োজন।


রিমোট মেশিনে এটি রুট সুবিধাগুলির প্রয়োজন এমনকি অ-অনুমোদিত পোর্টগুলির UDP টানেলিং এবং PermitRootLogin সেটিকে 'না' হিসাবে সেট করে। খুব খারাপ.
phil pirozhkov

@ গ্রীটি এই বিকল্পটি ইঙ্গিত করার জন্য আপনাকে ধন্যবাদ, যা ফিলিপোজক্কভের প্রয়োজনীয় রুট লগইন দ্বারা নির্দেশিত হয়। আমি রুট প্রয়োজন না এটা ঠকাই করার উপায় হতে পারে যদি আশ্চর্য?
humanityANDpeace

4
@ হিউম্যানিট্যান্ডপিপাস: আপনি টুন / ট্যাপ ডিভাইসগুলি তৈরি করতে এবং নির্দিষ্ট ব্যবহারকারীর মালিকানা তৈরি করতে পারেন ip tuntap add
grawity

হাই @ Gravity। আমি আপনার সমাধান পছন্দ কিন্তু এটি কাজ করতে পারে না। আমি precreated tun নিম্নরূপ ডিভাইস: sudo ip tuntap add mode tun কিন্তু যখন কখনও ব্যবহার -w এই মত অপশন: ssh $Server -w $port আমি পাই Tunnel device open failed. Could not request tunnel forwarding. আমি কি ভুল করছি?
Lucas Aimaretto

11

অথবা আপনি সহজেই ব্যবহার করতে পারে এসএসএফ (যা এই ব্যবহার ক্ষেত্রে পরিচালনা করার জন্য ডিজাইন করা হয়েছিল), একটি সহজ কমান্ড দিয়ে:


মক্কেলের পক্ষে:

#>./ssfc -U 53:192.168.1.1:53 server.foo.com

এই কমান্ডটি স্থানীয় পোর্ট 53 (dns) থেকে 192.168.1.1 পোর্ট 53 তে লোড করা হয়েছে, স্থানীয় হোস্ট এবং server.foo.com এর মধ্যে সুরক্ষিত টানেলের মাধ্যমে।


আপনি একটি এসএসএফ সার্ভার প্রয়োজন হবে (পরিবর্তে - বা পরবর্তী - আপনার এসএসএস সার্ভার):

#>./ssfs

যাইহোক, এসএসএফের ক্লায়েন্ট এবং সার্ভার উভয়ই উইন্ডোজ / লিনাক্স / ম্যাকে কাজ করে। এটি একটি ইউজারল্যান্ড অ্যাপ্লিকেশন, তাই আপনার টুন / ট্যাপ বা ভিপিএন দরকার নেই।

পোর্ট 53 পুনঃনির্দেশিত করার জন্য, আপনি যে সরঞ্জামটি ব্যবহার করছেন সেটি সত্ত্বেও আপনাকে প্রশাসনিক সুবিধাগুলির প্রয়োজন হবে।

আরো তথ্যের জন্য, বিবরণ, ক্ষেত্রে ব্যবহার, বা ডাউনলোড করুন: https://securesocketfunneling.github.io/ssf/


দয়া করে সাবধানে উত্তর দিন, "এখানে আমার পণ্য", এটি সীমাহীন স্প্যাম। আমি পড়া এবং নিম্নলিখিত সুপারিশ সাহায্য কেন্দ্র থেকে নির্দেশিকা
heavyd

5
সর্বাধিক, এটি একটি লজ্জাহীন প্লাগ। যাইহোক সমাধান আপনার অনুরোধ মাপসই করা হতে পারে। যাইহোক, এসএসএফ ওপেনসোর্স এবং অলাভজনক।
ssf-developers

10
@ হেভিডঃ যদি তিনি হ্যাকি স্ক্রিপ্টগুলির একটি গুচ্ছ পোস্ট করেন তবে এটি গ্রহণযোগ্য হবে, কিন্তু সে একটি পরিপক্ক ওপেন সোর্স টুল তৈরি করেছে, তাই না? এটা পুরোপুরি মূল প্রশ্ন উত্তর।
Synthead

আমি দুঃখিতভাবে স্বীকার করছি যে এটিই সেই সরঞ্জাম যা আমি খুঁজছেন ছিল, এমনকি যদি এটি একটি লজ্জাহীন প্লাগ ছিল।
therealrootuser

8

আমি পেতে পারিনি nc SNMP এর জন্য কাজ করতে, কারণ SNMP ক্লায়েন্টরা একটি নতুন উত্স UDP পোর্ট নির্বাচন করে চলেছে, এবং কয়েকটি একযোগে সক্রিয় হতে পারে।

পরিবর্তে, আমি কীভাবে এটি করব তা বর্ণনা করে একটি পোস্ট লিখেছি socat এই ব্লগ পোস্ট , উদাহরণ হিসাবে SNMP ব্যবহার করে। আনুষ্ঠানিকভাবে, দুইটি টার্মিনাল ব্যবহার করে, একটি ওভারভিউ দিয়ে শুরু করুন:

overview

টার্মিনাল এক:

client$ ssh -L 10000:localhost:10000 server
server$ socat -T10 TCP4-LISTEN:10000,fork UDP4:switch:161

এটি টিসিপি পোর্ট 10000 এর এসএসএইচ ফরোয়ার্ড তৈরি করে এবং সার্ভারে সামাজিক চালায়। সোশ্যাল কমান্ড লাইনে "সুইচ" হিসাবে সুইচ এর আইপি ঠিকানা উল্লেখ করা হয়েছে তা লক্ষ্য করুন।

টার্মিনাল দুই:

client$ sudo socat UDP4-LISTEN:161,fork TCP4:localhost:10000

যে ক্লায়েন্ট উপর সামাজিক সেট আপ। যা করা উচিৎ.


এই আমার জন্য কাজ :)
Paul Fenney

3

একটি ইউপিডি পোর্ট অ্যাক্সেস থাকলে একটি ভিপিএন একটি ভাল সমাধান।

যদি আপনার কেবলমাত্র টিসিপি এসএসএইচ পোর্ট অ্যাক্সেস থাকে তবে একটি এসএসএইচ টানেল কমপক্ষে পিং এবং প্যাকেট ব্যাকট্র্যাকিংয়ের জন্য ভিপিএন হিসাবে ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.