গন্তব্য পোর্টের ভিত্তিতে বিভিন্ন ইন্টারফেসে আউটপুট ট্র্যাফিক


23

আমার প্রশ্নটি মূলত একইরকম কিছু নির্দিষ্ট ইন্টারফেসে কেবল নির্দিষ্ট আউটবাউন্ড ট্র্যাফিকের অনুমতি দেয়

আমার দুটি ইন্টারফেস রয়েছে eth1(10.0.0.2) এবং wlan0(192.168.0.2)। আমার ডিফল্ট রুটটি এর জন্য eth1। ধরা যাক আমি সমস্ত https- ট্র্যাফিকের মধ্য দিয়ে যেতে চাই wlan0। এখন আমি যদি অন্য প্রশ্নের মধ্যে প্রস্তাবিত সমাধানটি ব্যবহার করি তবে https ট্র্যাফিক চলবে wlan0, তবে তার উত্স-ঠিকানা eth1(10.0.0.2) থাকবে। যেহেতু এই ঠিকানাটি wlan0গেটওয়ের জন্য রুটেযোগ্য নয় , উত্তরগুলি আর ফিরে আসবে না। সহজ উপায়টি হ'ল অ্যাপ্লিকেশনটিতে কেবলমাত্র বাইন্ড অ্যাডরকে সঠিকভাবে সেট করা যায় তবে এই ক্ষেত্রে এটি প্রযোজ্য নয়।

আমি অনুভব করি যে এসআরসি-অ্যাডারের নতুন করে লিখতে হবে:

# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2

এখন tcpdump আউটগোয়িং প্যাকেটগুলি ঠিক সূক্ষ্ম দেখায় এবং ইনগোয়িং প্যাকেটগুলি 192.168.0.2 এ আসে, তবে সম্ভবত তারা অ্যাপ্লিকেশনটিতে শেষ হয় না, কারণ আমি যা দেখতে পাই তা হ'ল অ্যাপ্লিকেশনটি এসওয়াইএন-প্যাকেটটি পুনরায় বিক্রয় করছে, যদিও এসআইএনএন- এসি কে ইতিমধ্যে প্রাপ্ত হয়েছিল।

তাই আমি ভেবেছিলাম, সম্ভবত আমারও আগত ঠিকানা আবার লিখতে হবে:

iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2

কিন্তু এটিও কার্যকর হয়নি। সুতরাং আমি এখানে আটকে এক ধরনের। কোন পরামর্শ?

উত্তর:


24

আপনি কাছাকাছি।

অ্যাপ্লিকেশনটি রিটার্ন ট্র্যাফিক দেখতে পাচ্ছে না এর আসল কারণ হ'ল আইপি স্পুফিং সুরক্ষায় কার্নেলের নির্মিত। অর্থাৎ, ফেরার ট্র্যাফিক রাউটিং টেবিলের সাথে মেলে না এবং তাই বাদ দেওয়া হয়। আপনি এটির মতো স্পোফিং সুরক্ষা বন্ধ করে এটি ঠিক করতে পারেন:

sudo sysctl net.ipv4.conf.wlan0.rp_filter=0

তবে আমি এটি সুপারিশ করব না। আরও সঠিক উপায় একটি বিকল্প রাউটিং উদাহরণ তৈরি করা হয়।

  1. চিহ্নটি প্রয়োজনীয়। এটা রাখ.
  2. উত্স নাটও প্রয়োজনীয়।
  3. চূড়ান্ত ডিএনএটি অপ্রয়োজনীয়, তাই আপনি এটি সরাতে পারেন।

আপনি iprouteপ্যাকেজ ইনস্টল করা আছে তা নিশ্চিত করুন । আপনার যদি ipকমান্ডটি থাকে তবে আপনি সেট হয়ে গেছেন (এটি দেখতে আপনার মতো মনে হচ্ছে তবে এটি প্রথমটি না পেলে)।

/etc/iproute2/rt_tablesনিম্নলিখিত লাইনটি যুক্ত করে একটি নতুন টেবিল সম্পাদনা করুন এবং যুক্ত করুন :

200 wlan-route

তারপরে আপনাকে wlan-routeডিফল্ট গেটওয়ে দিয়ে নামযুক্ত আপনার নতুন রাউটিং টেবিলটি কনফিগার করতে হবে এবং শর্তসাপেক্ষে সেই টেবিলটিতে ট্র্যাফিক প্রেরণের জন্য নিয়ম তৈরি করতে হবে। আমি ধরে নেব আপনার ডিফল্ট গেটওয়েটি 192.168.0.1। স্বাভাবিকভাবেই এটি আপনার আসল নেটওয়ার্কের সাথে মিলিত হওয়া দরকার, কেবল আমার অনুমান নয়।

ip route add default via 192.168.0.1 dev wlan0 table wlan-route
ip rule add fwmark 0x1 table wlan-route

আপনার চূড়ান্ত টীকায়িত লিপিটি দেখতে এরকম হবে:

# Populate secondary routing table
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table wlan-route
# Mark these packets so that iproute can route it through wlan-route
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2

এটি দেখার জন্য সময় দেওয়ার জন্য ধন্যবাদ। যাইহোক, এটি ইতিমধ্যে যা আমি ব্যবহার করছিলাম, (অন্য প্রশ্নে বর্ণিত হিসাবে) তাই আমার অতিরিক্ত রুট সেট আপ করা হয়েছে, তবে এটি এখনও একইরকম। এসওয়াইএন-এসিগুলি 192.168.0.2 এ ফিরে আসে তবে দৃশ্যত কখনই অ্যাপ্লিকেশনটিতে পৌঁছায় না।
রামপেল

ফিরে যান এবং আমার উত্তর আবার পড়ুন। আমি সম্বোধন করেছি।
বাহামত

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

সঠিক উত্স ঠিকানা নির্দিষ্ট করতে আপনাকে কমান্ডগুলিতে একটি srcবিকল্প যুক্ত ip routeকরতে হবে।
ডেভিড শোয়ার্জ

@ ডেভিডশওয়ার্টজ: thatশ্বর এর POSTROUTING SNATযত্ন নেবেন।
বাহামাত

8

বাহামতের সমাধান সঠিক; তবে দয়া করে নোট করুন যে আমার এই কাজটি করার একমাত্র উপায় ছিল সিস্টেমের প্রতিটি ইন্টারফেসের জন্য rp_filter অক্ষম করা, নাটিটিংয়ের সাথে জড়িত কেবলমাত্র দুটি (এই ক্ষেত্রে eth1 এবং wlan0)।

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done
echo 1 > /proc/sys/net/ipv4/route/flush

(এই পৃষ্ঠার শেষে গুরুত্বপূর্ণ নোটটি দেখুন: উন্নত রাউটিং হাওটো - সেখানে পোস্ট করা লিঙ্কটি আর বিদ্যমান নেই, তবে আমি ওয়েবব্যাক মেশিনের মাধ্যমে এটি পেয়েছি)


এই উত্তরের জন্য ধন্যবাদ, আমিও কেবল আপনার উত্তর বিবেচনা করে বাহামত সমাধান পেতে পারি।
ডিনালন

আমার জন্য মোটামুটি স্ট্যান্ডার্ড উবুন্টু 12.04 এলটিএস বক্সে, আরপি_ফিল্টারটি নিষ্ক্রিয় করার এবং রুট ক্যাশে ফ্লাশিংয়ের জন্য আমাকে আইপ্যাবনেস যুক্তি থেকে ইন্টারফেসের নামটিও ছিনিয়ে নিতে হয়েছিল। কেন তদন্ত করার পর্যাপ্ত সময় নেই।
কস্টিন গুয়ে

0

একটি পরামর্শ: আপনার সর্বদা আউটপুট চেইনের --sportপরিবর্তে ব্যবহার করা উচিত --dport

নাটগুলি পরিবর্তিত হয় dportএবং এটি আপনার নিয়মকে অগ্রহণযোগ্য করে তুলবে।


2
এমন কিছু আছে যা আমি পাচ্ছি না? গন্তব্য বন্দর হিসাবে dport, পরিবর্তন করতে পারে না। এটি সেবারের বন্দর যা অধিবেশনটি চেষ্টা করার চেষ্টা করছে, যেমন, HTTP, ssh, SMTP sm হয় আপনি খেলাধুলা পেয়েছেন এবং ডিফোর্ট বিভ্রান্ত হয়ে পড়েছেন বা আমি স্পষ্ট কিছু মিস করছি। : পি
কেউ

0

আমি মনে করি নীচে প্রয়োজন:

ip ru add from 192.168.0.2 table 3 prio 300
ip ro add table 3 default via 192.168.0.1 dev wlan0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.