iptables পোর্ট পুনর্নির্দেশ লোকালহোস্টের জন্য কাজ করছে না


54

আমি 443 বন্দর থেকে সমস্ত ট্র্যাফিককে অভ্যন্তরীণ বন্দরে 8080 এ পুনঃনির্দেশিত করতে চাই t আমি এই কনফিগারটি আইপটিবলের জন্য ব্যবহার করছি:

iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \
         --dport 443 -j REDIRECT --to-ports 8080

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

wget https://localhost

স্থানীয় ট্র্যাফিককেও পুনর্নির্দেশের জন্য আমি কীভাবে আইপিটিবেলস বিধি বাড়িয়ে দিতে পারি?


এই বিষয়টি আরও একটি সাধারণ উত্তর সরবরাহ করে: সার্ভারসফল্ট
জেরোইন

1
প্রতিনিধি সহ কেউ লাইন বিরতির আগে কমান্ডটিতে ব্যাকস্ল্যাশ যুক্ত করতে পারেন?
সিওরো সান্তিলি 事件 改造 中心 法轮功 六四 事件

উত্তর:


68

লুপব্যাক ইন্টারফেস দ্বারা প্রেরুটিং ব্যবহৃত হয় না, আপনাকে একটি OUTPUT নিয়মও যুক্ত করতে হবে:

iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports 8080

3
প্রথম নিয়মের দরকার নেই। স্থানীয়ভাবে উত্পাদিত প্যাকেটগুলি PREROUTING শৃঙ্খলার মধ্য দিয়ে যায় না।
খালেদ

9
আমি দক্ষতার জন্য প্রাথমিক নিয়মটি যুক্ত করেছি, কারণ তিনি চান বাহ্যিক ট্র্যাফিকটিও পুনঃনির্দেশিত হোক। নিয়মটির উত্স / গন্তব্য প্রয়োজন নেই যদি তারা কেবল সমস্ত আইপি গ্রহণ করতে বলে
অ্যান্ডি

ওহ আফসোস আমি যখন উত্তর দিয়েছিলাম তখন আমি আপনার উত্তর দেখতে পাইনি।
অ্যান্ডি

হাই অ্যান্ডি, আমি এখনও সার্ভার.কমের সাথে সংযুক্ত হয়ে যাচ্ছি <<ip> |: 443 ... ব্যর্থ: সংযোগ প্রত্যাখাত।
ক্রিস

হাই ক্রিস, সেটাই কি লোকালহোস্টের সাথে সংযোগ স্থাপন | 127.0.0.1 | 443 বা এটি ডোমেন? যদি আপনি পরে এবং এটি আপনার সার্ভার থেকে চালাচ্ছেন তবে আপনার অভ্যন্তরীণ রাউটিংয়ের সমস্যা হতে পারে। আপনি উইজেট সার্ভার.কম: ৮০৮০ চেষ্টা করে দ্বিগুণ চেক করতে পারেন (যদিও আমি ধরে নিয়েছি যে আপনি পোর্ট ফরওয়ার্ডিং এর কারণটি এটি বাহ্যিকভাবে অবরুদ্ধ?) আমার নিজের ভিপিসির সমস্যাটি রয়েছে, তবে আপনি নিজের / ইত্যাদি / হোস্ট ফাইলটিতে 127.0.0.1 হিসাবে ডোমেনটি সংজ্ঞায়িত করে একটি কার্যনির্বাহ তৈরি করতে পারেন।
অ্যান্ডি

10

প্যাকেটগুলিকে লোকালহোস্ট থেকে অন্য মেশিনে পুনর্নির্দেশের নিয়ম:

 iptables -t nat -A OUTPUT -o lo -d 127.0.0.1 -p tcp --dport 443 -j DNAT  --to-destination 10.x.y.z:port

কাজ করবে, তবে কার্নেলের মধ্যে আপনাকে এই বিকল্পটি সক্ষম করতে হবে:

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

কার্নেল সেটিংস ছাড়াই এটি কাজ করবে না।


যে কাজ করবে। আমি মনে করি iptables এ সব করা আরও পরিষ্কার।
চতুর্ভুজমুক্ত

প্রকৃতপক্ষে, গন্তব্যটি যদি অন্য কোনও মেশিনে থাকে, কোনও ভিএম বা দূরবর্তী মেশিনে লাইন থাকে তবে কার্নেল সেটিংটি neded হয়।

উপরে যদি অ্যান্ডির পরামর্শ অনুসারে আপনার দুটি নিয়ম থাকে তবে তা নয়
চতুর্মুখী

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

প্রকৃতপক্ষে, এটি 'কার্নেল সংস্করণ> = 3.6 এর উপর নির্ভরশীল, স্পষ্টতই।
চতুর্দিকে

3

এ কেমন?

iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 443 -j reddire - to-port 8080


2

আপনি বলেছিলেন যে আপনি সংযোগ অস্বীকার করার ত্রুটি পেয়ে যাচ্ছেন। এর অর্থ হ'ল যে পোর্টটিতে আপনি সংযোগ দেওয়ার চেষ্টা করছেন সেখানে কোনও স্থানীয় প্রক্রিয়া শুনছে না! শ্রবণ প্রক্রিয়াগুলি পরীক্ষা করতে, কমান্ডটি ব্যবহার করুন:

$ sudo netstat -lnp | grep 8080

নিয়ম প্রয়োগ করার পরে, সংযোগ পেতে আপনার 8080 বন্দরটিতে একটি প্রক্রিয়া শোনানো উচিত।

পরিবর্তে আপনার নিম্নলিখিত নিয়ম থাকা উচিত বলে মনে হচ্ছে:

$ iptables -t nat -I OUTPUT --source 0/0 --destination 0/0 -p tcp
                                       --dport 443 -j REDIRECT --to-ports 8080

মনে রাখবেন আপনি লোকালহোস্ট থেকে প্রেরণ করছেন। সুতরাং, আপনার আউটপুট প্যাকেট পুনর্নির্দেশ করা প্রয়োজন।


1
তোমার উত্তরের জন্য ধন্যবাদ প্রক্রিয়াটি 8080 বন্দরে শোনা যাচ্ছে for এর জন্য আমি সমস্ত ট্রাফিক সেই বন্দরে পুনর্নির্দেশ করতে চাই।
ক্রিস

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