একটি মেশিন থেকে অন্য মেশিনে কীভাবে একটি পোর্ট ফরওয়ার্ড করবেন?


19

নিম্নলিখিত পরিস্থিতি বিবেচনা করুন:

আমার বাড়িতে আমার একটি রাউটার (যা ইন্টারনেটের সাথে সংযুক্ত), সার্ভার (এস) এবং আমার প্রধান মেশিন (এম) রয়েছে। এস ইন্টারনেট থেকে এস পৌঁছনীয় (এটির স্ট্যাটিক আইপি রয়েছে), এবং এটি 24/7 অবধি উঠে গেছে, যখন এম নেই।

কখনও কখনও, আমি বাইরের ইন্টারনেট থেকে অ্যাক্সেসযোগ্য কিছু অ্যাপ্লিকেশন তৈরি করতে চাই (যা এম এর কিছু বন্দরে শোনা যায়, উদাহরণস্বরূপ 8888)।

তার জন্য, আমি এস (2222) তে এম এর বন্দরের 8888 তে ফরোয়ার্ড করার জন্য কিছু বন্দর স্থাপন করতে চেয়েছিলাম, যাতে যে কোনও এস: 2222 এ অ্যাক্সেস করে সে মনে করে যে সে এম: 8888 এ অ্যাক্সেস করছে।

আমি ssh পোর্ট ফরওয়ার্ডিং ব্যবহার করার চেষ্টা করেছি, আমার সেরা চেষ্টাটি নিম্নরূপ ছিল:

ssh -L 2222:M:8888 -N M

তবে এটি আমাকে কেবল অন্য মেশিন থেকে নয়, 2222 বন্দরটি সার্ভার থেকে অ্যাক্সেস করতে দেয়।

এটি সঠিকভাবে করার কোনও উপায় আছে? সাধারণত, আমি এটি একটি সাধারণ কমান্ড হিসাবে চাই, যা আমার আর ফরওয়ার্ডিংয়ের দরকার না হলে আমি start C দিয়ে শুরু করতে এবং বন্ধ করতে সক্ষম হব।


Localhost.run চেষ্টা করুন যা ওয়েবসাইট এ পেতে পারেন localhost.run আমার মনে হয় একটি উপায় .. সেখানে আউট আপনার পণ্য পেতে হয়
Angelena Neilsomt

উত্তর:


16

হ্যাঁ, এটি GatewayPortsএসএসএইচে বলা হয়। এর একটি অংশ ssh_config(5):

GatewayPorts
        Specifies whether remote hosts are allowed to connect to local
        forwarded ports.  By default, ssh(1) binds local port forwardings
        to the loopback address.  This prevents other remote hosts from
        connecting to forwarded ports.  GatewayPorts can be used to spec‐
        ify that ssh should bind local port forwardings to the wildcard
        address, thus allowing remote hosts to connect to forwarded
        ports.  The argument must be “yes” or “no”.  The default is “no”.

আপনি যদি এসএসএইচ-ইন-এর মতো একই মেশিনে ফরোয়ার্ড করছেন তবে আপনি যদি ফরওয়ার্ডিংয়ের localhostপরিবর্তে ব্যবহার করতে পারেন M- যদি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি।

সুতরাং, আদেশটি এটি হয়ে যাবে:

ssh -L 2222:localhost:8888 -N -o GatewayPorts=yes hostname-of-M

এবং এর মধ্যে দেখতে হবে netstat -nltp:

tcp        0      0    0.0.0.0:2222   0.0.0.0:*  LISTEN  5113/ssh

এখন যে কেউ 2222 টিসিপি বন্দরে এই মেশিনটি অ্যাক্সেস করছে সে লোকালহোস্টের সাথে কথা বলবে: মেশিন এম তে দেখা 88888 নোট করুন যে এম এর 8888 পোর্টে প্লেয়ার ফরওয়ার্ডিংয়ের মতো নয় Note


1
ধন্যবাদ! ওই কাজগুলো! তবে কিছু অদ্ভুততা রয়েছে - কোনও কারণে, আউটপুটে "বাইন্ড: ঠিকানা ইতিমধ্যে ব্যবহৃত" লাইন রয়েছে। এর অর্থ কী হতে পারে?
রোগাচ

1
আপনার ইতিমধ্যে সেই বন্দরে কিছু প্রক্রিয়া চলছে। netstatঠিক কী খুঁজে পেতে একই কমান্ডটি ব্যবহার করুন । সম্ভবত অন্য একটি অনুরূপ এসএসএইচ এখনও পটভূমিতে চলছে এবং পিআইডি নেটস্ট্যাট আপনাকে বলে এটি ব্যবহার করে হত্যা করুন।
gertvdijk

মজার বিষয় হ'ল আমি ইতিমধ্যে এটি করেছি - এস এবং এম উভয় ক্ষেত্রে p বন্দরগুলিতে কোনও প্রক্রিয়া না থাকলে যদি কিছু থাকে তবে পুরো নির্মাণটি সম্ভবত কাজ করতে ব্যর্থ হত।
রোগাচ

10

আরও একটি উপায় আছে। আপনি iptables সহ এস: 2222 থেকে ডাব্লু: 8888 এ পোর্ট ফরওয়ার্ডিং সেট আপ করতে পারেন। একক আদেশ:

iptables -t nat -A PREROUTING -p tcp --dport 2222 \
         -j DNAT --to-destination 1.2.3.4:8888

যেখানে 1.2.3.4 এম এর আইপি ঠিকানা। একে NAT (নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন) বলা হয়।


1
যেহেতু আপনি এখানে কেবল গন্তব্য NAT করছেন (উত্স NAT এর বিপরীতে), এটি কেবলমাত্র নির্দিষ্ট পরিস্থিতিতে নির্ভরযোগ্যভাবে কাজ করবে এবং রাউটিং টেবিলগুলি সংশোধন করার প্রয়োজন হতে পারে। হোস্ট (এস) এ চলমান ভার্চুয়াল মেশিনগুলিতে (এম) ফরোয়ার্ড করার জন্য, এটি যদিও ভাল কাজ করতে পারে।
gertvdijk

এই কমান্ডটি গেটওয়েতে জারি করা উচিত। আমি ধরে নিই যে এস এবং এম একই ল্যানে রয়েছে। সোর্স NAT আধুনিক লিনাক্স কার্নেলগুলির মধ্যে সংযোগ ট্র্যাকার দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হবে। আমার অফিসের নেটওয়ার্কে আমার এ জাতীয় কনফিগারেশন রয়েছে এবং এটি পুরোপুরি কার্যকর হয়। তবে কমান্ডটি আরও সুনির্দিষ্ট করা সম্ভব (উদাহরণস্বরূপ, iptables -i eth0 বলা যেখানে eth0 বাইরের ইন্টারফেস হয়)।
গেভিয়াল

যদি এস এবং এম একই ল্যানে থাকে তবে আপনার সেখানে পোর্ট ফরোয়ার্ডিংয়ের দরকার নেই, কারণ তাদের মধ্যে কোনও ট্র্যাফিক গেটওয়ে দিয়ে যায় না।
gertvdijk

1
ইয়াপ, তবে এম: 8888 এর সাথে সংযুক্ত করা ইন্টারনেট থেকে তৈরি, আমি ধরে নিই। কেউ ইন্টারনেট তৈরি করেন -> এস: 2222 -> এম এবং এস ল্যান রাউটার iptables সহ -> এম: 8888
জেভিয়াল

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