iptables 127.0.0.1 এ বাইরের অনুরোধগুলি পুনর্নির্দেশ করে


41

আমার 227.0.0.1 তে 2222 পোর্ট সহ একটি পরিষেবা চলছে I আমার সমস্ত অনুরোধগুলি 192.168.2.2 22২২২২২ (আইপি বাইরে) কেবলমাত্র সাবনেট থেকে 192.168.1.0/24 থেকে 127.0.0.1 :2 2222 তে ফরোয়ার্ড করা দরকার ।

আমি এটি ব্যবহার করার চেষ্টা করছি, কিন্তু এটি কাজ করছে না।

$ iptables -t nat -I PREROUTING -p tcp -d 192.168.1.0/24 --dport 2222 -j DNAT --to-destination 127.0.0.1:2222

আমি কীভাবে এটি কাজ করতে পারি?

ইউপিডি: সম্পাদনা ঠিকানা পরিকল্পনা scheme


আমাদের কিছু স্পষ্টতা দরকার। কোথা থেকে ট্র্যাফিক আসছে? মূলত ট্র্যাফিক কোথায় যাচ্ছে? ট্র্যাফিক কোথায় যাওয়া উচিত? আমি এটি পড়ার সাথে সাথে আপনি চান যে ট্রাফিক 192.168.1.0/24 থেকে 127.0.0.1:2২২২২২২২২২২২২২২২২২.২৩.৩4.৪৫:2২২২২২২২২২২২২২ .২২।।। Red red।।।।।।।। তবে ওয়ারেনের উত্তর ধরেছে আপনি 192.168.1.0/24 থেকে 12.23.34.45822222 ট্র্যাফিকটি 127.0.0.1 ফেভারিট
প্যাট্রিক

1
ট্র্যাফিক 192.168.1.0/24 সাবনেট থেকে 192.168.2.2 रातকটি 222 এ আসে এবং 127.0.0.1 रात্ট 222 এ পরিষেবা অনুবাদ করা উচিত। আমি ঠিকানার ঠিকানা স্কিম করছি।
সিমওয়াইট

1
আপনি এমন কোনও নিয়ম চান যা ট্রাফিককে 2222সাবনেট থেকে লুপব্যাক ইন্টারফেসে পোর্ট করতে দেয় 192.168.1.0/24? এটি কেবলমাত্র একক নিয়মের সেটআপ নয়। এখানে দেখুন: debuntu.org/...
SLM

হ্যাঁ. আমি যেমন বুঝতে পেরেছি তখন আমাকে মাস্ক রুল যুক্ত করা দরকার? আইপি ফরওয়ার্ডিং ইতিমধ্যে অবশ্যই সক্ষম করা আছে।
সিমউইট

কেন এটি একটি "আসল" আইপিতে চালাবেন না এবং অযাচিত উত্স থেকে আসা ট্র্যাফিককে ফিল্টার আউট করবেন? মূলত এটিই ফায়ারওয়ালগুলি ...
ভনব্র্যান্ড

উত্তর:


60

আপনি যে iptables নিয়মটি ব্যবহার করছেন তা কাজ করবে, তবে আপনাকে আরও একটি পরিবর্তন করতে হবে:

sysctl -w net.ipv4.conf.eth0.route_localnet=1

(প্রতিস্থাপন eth0NIC সঙ্গে 192.168.2.2উপর বসবাস)

ডিফল্টরূপে এই মানটি 0, যা কার্নেলকে নির্দেশ করে যে বহিরাগত ট্র্যাফিকের গন্তব্য না রোধ করতে 127.0.0.0/8। এটি কেবল সুরক্ষার জন্য কারণ এ জাতীয় যান চলাচল স্বাভাবিক নয়।


অতিরিক্ত নোট: আপনার বর্তমান iptables নিয়মটি খুব বিস্তৃত। আপনার নিয়মটি -d 192.168.1.0/24 --dport 2222গন্তব্য ম্যাচ হিসাবে নির্দিষ্ট করে , এর অর্থ হ'ল যদি আপনার মেশিনটি 2222 পোর্টের অন্য কোনও হোস্টের সাথে (যেমন বহিরাগত ট্র্যাফিক) কথা বলার চেষ্টা করে, এটিও পুনঃনির্দেশিত হবে। আপনার হয় -dম্যাচটি পরিবর্তন করতে হবে -d 192.168.2.2, বা যুক্ত করতে হবে -i eth0(বা আপনার যা কিছু হোক না কেন)।


8
এই তথ্যটি আশ্চর্যজনকভাবে খুঁজে পাওয়া শক্ত।
ভ্রেন টি।

হ্যাঁ, হার্ড-টু-সন্ধানের তথ্য খুব মূল্যবান! ধন্যবাদ! তবে আমার নেই route_localnet। এর জন্য অন্য নামও আছে? (লিনাক্সের 2.6.30 মধ্যে) ls /proc/sys/net/ipv4/conf/lan/: accept_redirects arp_accept arp_filter arp_notify disable_policy force_igmp_version log_martians medium_id proxy_arp secure_redirects shared_media accept_source_route arp_announce arp_ignore bootp_relay disable_xfrm ফরওয়ার্ডিং mc_forwarding promote_secondaries rp_filter send_redirects ট্যাগ
imz - ইভান Zakharyaschev

আমি দেখছি, এর জন্য প্যাচটিroute_localnet আমার কার্নেলের চেয়ে আরও সাম্প্রতিক (June ই জুন, ২০১২) (২.6.৩০-স্টাডি-ডিএফ-এএফ -1515 # 1 এসএমপি সোম 14 ডিসেম্বর 08:45:48 ইউটিসি 2009)। ঠিক আছে, আমি কেবল চেয়েছিলেন (বাইরে থেকে ভিতরে) -এর মত একটি ফরোয়ার্ডিং প্রক্রিয়ার সঙ্গে বন্দর-ফরোয়ার্ড করলে অর্জন করব netcat( nc), xinetdঅথবা বন্দর-ফরোয়ার্ড করলে অপশন ssh(আধুনিক অকার্যকর এবং নির্বোধ, অবশ্যই, কিন্তু আমি এটা উল্লেখ, কারণ, ভাল, এই সম্ভাবনা আছে)।
ইম্জ - ইভান জাখারিয়াচেভ

2
আমার 2 সেন্ট: আপনি সমস্ত ইন্টারফেসের সাথে এই পরামিতিটি সক্ষম করতে পারেনsysctl -w net.ipv4.conf.all.route_localnet=1
দিমিত্রিউসান

অন্যদের মত, এই তথ্যটি আসা খুব কঠিন ছিল। ধন্যবাদ, যদি আমি এটি আগে খুঁজে পেয়েছি তবে আমাকে এক টন প্রচেষ্টা বাঁচাতে পারত।
স্টিফেন সিম্পসন

3

আপনি লোকালহোস্টে পুনর্নির্দেশ করতে পারেন তবে লুপব্যাকে নয় (127.0.0.0/8)। লুপব্যাক একটি লুফোল। আপনাকে আপনার আসল ইন্টারফেসগুলির একটিতে পুনর্নির্দেশ করতে হবে। লাল ব্যবহার করার চেষ্টা করুন।

iptables -t nat -A PREROUTING ..... -j REDIRECT --to-port 222


সিস্কটেল ভোডো ছাড়া এটি সম্ভবত সেরা উত্তর ...
লেস্টার চেউং

222 পোর্টটি কেবলমাত্র স্থানীয়
হোস্টে

-j DNAT --to-destination w.x.y.z:222
সেক্ষেত্রে

2

সঠিক উত্তরটি যদি route_localnetকাজ না করে তবে কী হবে ? ..

যদি আপনার কার্নেলের জন্য প্যাচটিroute_localnet অন্তর্ভুক্ত না থাকে , তবে ... কার্নেলটি আপগ্রেড করুন!

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

netcat( nc), xinetdএবং ssh(এবং আরও বেশি) হ'ল এটি করতে সক্ষম প্রোগ্রামগুলির সমস্ত উদাহরণ (যদিও চয়ন sshকরা অদ্ভুত এবং অকার্যকর হবে)।

আমি xinetdএই জন্য একটি কনফিগারেশন লিখেছি । এখন এই পরিষেবাটি স্বয়ংক্রিয়ভাবে উত্থাপিত হবে:

# cat /etc/xinetd.d/z-from-outside 
# default: off
# description: Forward connections to the z port.
service z-from-outside
{
    disable         = no
    socket_type     = stream
    type        = UNLISTED
    wait            = no
    user            = nobody
    bind        = vaio.ob
    port        = 7070
    redirect    = localhost 7070
}
# 

( vaio.obবাহ্যিক নেটওয়ার্ক ইন্টারফেসে এই হোস্টের নাম))

একটি পরে service xinetd reload, আসুন এটি শুনছে তা পরীক্ষা করে দেখুন:

# lsof -i -P | fgrep 7070
xinetd    556      root    6u  IPv4 1797906      0t0  TCP vaio.ob:7070 (LISTEN)
sshd    27438 tun_zzoom    4u  IPv4 1059100      0t0  TCP localhost.localdomain:7070 (LISTEN)
# 

এবং প্রকৃতপক্ষে, সংযোগগুলি দিয়ে যায়!

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