আইপিটিবল এবং ডিএইচসিপি প্রশ্ন?


8

আমার অন্যান্য থ্রেডে আমি iptables নীতি সম্পর্কে কিছু আকর্ষণীয় বিষয় সম্পর্কে কথা বলছিলাম এবং জানিয়েছিলাম , ডিএইচসিপি কীভাবে কাজ করে এবং আইপ্যাবটেলগুলি কীভাবে এটি বোঝে সে সম্পর্কে আমি আরও বুঝতে চাই।

ETH0 আমার মূল স্যুইচটির সাথে সংযুক্ত রয়েছে যা কেবলমাত্র ইন্টারনেট অ্যাক্সেস নয় আমার বাইরের নেটওয়ার্কে অ্যাক্সেসের পাশাপাশি আমার রাউটার থেকে গতিশীল আইপি গ্রহণ করে।

ETH1 হ'ল অভ্যন্তরীণ কার্ড যা কোনও অভ্যন্তরীণ স্যুইচের সাথে সংযুক্ত থাকে যেখানে এক্স ক্লায়েন্টরা এই সার্ভার থেকে তাদের আইপিএস পান

ETH1 নেটওয়ার্কটি 192.168.1.0/255.255.255.0 যেখানে সার্ভার আইপি 192.168.1.254।

আমি যা বুঝতে পেরেছি তা থেকে, ডিএইচসিপি হ'ল বুটপ প্রোটোকল তাই আপনার ফায়ারওয়াল নীতিগুলি যদি সমস্ত কিছু ডিআরওপি করার জন্য থাকে তবে আপনার নেটওয়ার্কটি এখনও ডিএইচসিপি গ্রহণ করবে, যা পরীক্ষাগুলিতে আমি এটি সত্য বলে মনে করেছি।

Tcpdump থেকে:

root@test:~# tcpdump -i eth1 port 67 or 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:34:03.943928 IP 192.168.1.2.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:03.957647 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
11:34:06.492153 IP 192.168.1.2.bootpc > 192.168.1.254.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:06.506593 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300

Iptables কি করে তা দেখার জন্য আমি একটি সাধারণ লগ বিধি তৈরি করেছি:

root@test:~# tail -f /var/log/syslog
Oct 15 11:30:58 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9527 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:31:43 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9529 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:33:32 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9531 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:34:03 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9533 PROTO=UDP SPT=68 DPT=67 LEN=311

মাতৃসন্ধিতে আমার আইপটিবল নিয়মগুলি এখানে:

# deny all traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

# Use stateful inspection feature to only allow incoming connections
# related to connections I have already established myself
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# allow all traffic on lo interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

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

আমি যদি আমার ফায়ারওয়ালে অনুসরণের নিয়মটি যুক্ত করি:

$IPT -I OUTPUT -o $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT

যে কোনও ক্লায়েন্ট ডিএইচসিপি আপডেট করতে এটি অনেক কম সময় লাগবে।

উপরে বিবেচনা করা:

  1. এটি অবরুদ্ধ করা হচ্ছে না এমনকী কেন এটি আপডেট করতে সত্যই বেশি সময় নেয়?
  2. ডিএইচসিপি সার্ভারটি বন্ধ না করে কি আদৌ ড্রপ করা সম্ভব?
  3. BOOTP- র মাধ্যমে iptables এর মধ্যে dhcp সার্ভারটি কীভাবে অ্যাক্সেস করা সম্ভব? এটা কিভাবে হয়?

আপনি যদি ভাল লিঙ্কগুলি জানেন তবে আমার খুব বেশি কিছু নিতে আপত্তি হবে না :)


আমি আপনার tcpdump এবং iptables লগ আউটপুট দ্বারা কিছুটা বিভ্রান্ত। আপনি প্রম্পিস মোডে নেটওয়ার্ক ইন্টারফেস নিরীক্ষণ করছেন? আপনার ফায়ারওয়াল্ড সার্ভারটি আসলে তার এনআইসি কনফিগার করার জন্য ডিএইচসিপি ব্যবহার করছে?
স্টিভেন সোমবার

@ সার্ভারে ফায়ারওয়াল রয়েছে যা উপরে উল্লিখিত একটির মধ্যে ইথ0 এবং এথ 1 রয়েছে, এথ0 বাইরের দিক থেকে ক্লায়েন্ট হিসাবে ডিএইচসিপি গ্রহণ করে এবং এথ 1 আমার অভ্যন্তরীণ নেটওয়ার্কের জন্য আমার ডিএইচসিপি সার্ভার যা আমি কথা বলছি। Are you monitoring the network interface in promiscuous modeআমি এখনও কী শিখছি তার দ্বারা আপনি কী বোঝাতে চাইছেন ...
গুয়াপো

ওহ ঠিক আছে. আপনি যদি আপনার প্রশ্নটি বুঝতে চান তবে আপনাকে অবশ্যই আপনার নেটওয়ার্ক এবং সার্ভারগুলি আরও ভালভাবে বর্ণনা করতে হবে!
স্টিভেন সোমবার

প্রমিসাস মোড সম্পর্কে: এন.ইউইকিপিডিয়া.আর
স্টিভেন সোমবার

@ স্টিভেন এটি করবে এখন পয়েন্ট আউট করার জন্য ধন্যবাদ, আপনি কি ভাবেন যে আমাকে নেটওয়ার্ক লেআউট পরে অন্য কিছু নির্দিষ্ট করতে হবে?
গুয়াপো

উত্তর:


13

আমি উত্তর দিন # 2: না।

একটি আইপি ঠিকানা পাওয়ার পরে dhcp ডেমন নেটওয়ার্ক ইন্টারফেসে একটি কাঁচা সকেট তৈরি করে এবং নিজেই ইউডিপি প্রোটোকল পরিচালনা করে। সুতরাং ইউডিপি প্যাকেটগুলি কখনই iptables এর মধ্য দিয়ে যায় না।

ডিএইচসিপি ডিমনকে ইউডিপি প্রয়োগ করার কারণটি হ'ল যখন ইন্টারফেসের আইপি ঠিকানা থাকে তখন কার্নেলটি কেবল ইউডিপি (আসলে সমস্ত টিসিপি / আইপি স্যুট) পরিচালনা করতে পারে। পূর্বে ডিএইচসিপি ডেমনগুলি প্রথমে একটি ইন্টারফেসকে 0.0.0.0 এর আইপি ঠিকানা দিত কিন্তু এটি আর কাজ করে না।


প্যাকেট সকেট কাঁচা সকেট না iptables- র মধ্য দিয়ে যেতে। afaict। unix.stackexchange.com/a/447524/29483
সোর্সজেডি

5

যোগ করার পদ্ধতি

$IPT -I INPUT -i $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT

ডিএইচসিপিডি আপডেট দ্রুত তৈরি করবে :) এটি ইনপুট এবং আউটপুট উভয় পক্ষেই কাজ করবে। আপনি ebtables দিয়ে dhcpd ড্রপ করতে পারেন, iptables দিয়ে নয়। ডিএইচসিপিডি আইপি-র মধ্যে নয়, 0.0.0.0 এ শ্রবণ করছে listening


+1 আমি এটি ইনপুটটিতে রেখেছিলাম এবং এটি একই পরিমাণে সময় নিয়েছিল যেন আমার নিয়মে এটি ছিল না। আমি যখন এটি আউটপুট তৈরি করেছি তখন এটি একটি বিশাল পার্থক্য করেছিল। আমি ebtables ধন্যবাদ সম্পর্কে পড়তে হবে।
গুয়াপো

$ আইপিটি -I ইনপুট -i T INTIF -s 0/0 -p ইউডিপি --dport 67:68 - স্পোর্ট 67:68 -j এসিসিপিটি
টা

কেবলমাত্র উপরেরটি ব্যবহার করে দেখুন এবং এখনও আউটপুট নিয়ম ব্যবহারের তুলনায় খুব বেশি সময় নিচ্ছেন।
গুয়াপো

যেহেতু নীতিটি ড্রপ, সুতরাং আপনি উভয়ই ইনপুট এবং আউটপুট ব্যবহার করতে পারবেন।
টা কোইন

3

আমার সাম্প্রতিক পর্যবেক্ষণ, ওপেনডব্লিউআরটি কামিকাজে .0.০৯ = ২.৪.৩৪ এবং ব্যস্তবক্স ১.৪.২ থেকে ইউডিএইচসিপি:

আমার আউটপুট চেইনে একটি "এসিসিপিটি" নীতি আছে এবং ইনপুট দিকনির্দেশে মূলত আমি এই ক্লাসিক ক্যাচ-অল নিয়মের উপর নির্ভর করেছি:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

WAN ইন্টারফেসে (আমার udcpc এর কাছে) DHCP প্রতিক্রিয়াগুলিকে অনুমতি দেওয়ার জন্য। অর্থাৎ, এখানেই আমার আইএসপির আপস্ট্রিম ডিএইচসিপি সার্ভার আমাকে একটি আইপি ঠিকানা বরাদ্দ করে।

প্রাথমিক ডিএইচসিপি এক্সচেঞ্জ (আবিষ্কার, অফার, অনুরোধ, এসিসি) এবং একটি ডিএইচসিপি ইজারা পুনর্নবীকরণ (অনুরোধ, এসিসি) মধ্যে পার্থক্য মনে করুন।

বুটের পরে, udcpc সম্পূর্ণ প্রাথমিক এক্সচেঞ্জ দ্বারা শুরু হয়। যে বিনিময় সফল হবে। এবং অন্য দুটি পুনর্নবীকরণও সফল হবে - কেবল একটি অনুরোধ এবং স্বীকৃতি। আমার আইএসপি'র ডিএইচসিপি সার্ভার সাধারণত প্রায় এক ঘন্টা থেকে দেড় ঘন্টার জন্য পুনর্নবীকরণের সময় জিজ্ঞাসা করে, এইভাবে আমার ডিএইচসিপি ক্লায়েন্ট প্রতি 30 থেকে 45 মিনিটে একটি পুনর্নবীকরণের জন্য জিজ্ঞাসা করে (এই আচরণটি আরএফসির উপর ভিত্তি করে)।

তবে তৃতীয় বা চতুর্থ নবায়ন সম্পর্কে, এটি আকর্ষণীয় হতে শুরু করবে। টিসিপিডাম্প প্রায় তিন বা তাই পুনর্নবীকরণের প্রচেষ্টা প্রদর্শন করবে, তারপরে একটি সম্পূর্ণ প্রাথমিক এক্সচেঞ্জ - যা কেবল কয়েক মিনিট বা এমনকি সেকেন্ডের টাইমস্প্যানের মধ্যে। যেন udcpc এটি ফিরে পেয়েছে কি পছন্দ করে না :-( এবং শেষ পর্যন্ত সম্পূর্ণ বিনিময় দ্বারা সন্তুষ্ট হবে After এর পরে, আধ ঘন্টা পরে আরও একটি পুনর্নবীকরণ সফল হবে ... এবং গল্পটি আবার পুনরাবৃত্তি করবে।

আমি বুঝতে পেরেছি যে এটি সম্ভবত কার্নেলের সাথে সংযোগ ট্র্যাকিং যা কিছু ভুল হয়েছে। যেন কনট্র্যাক এন্ট্রি দুই ঘন্টা বা তার পরে শেষ হয়ে যায় এবং পরবর্তী ডিএইচসিপি নবায়নগুলি ব্যর্থ হয় কারণ সার্ভারের ACK সকেটটিতে udcpc শুনতে আসলে এটি তৈরি করে না। নোট করুন যে tcpdump (libpcap) কাঁচা ইন্টারফেসে শুনে এবং iptables সাপেক্ষে সমস্ত প্যাকেটগুলি আসতে আসতে দেখতে পারে। একবার ইউডিএইচসিপি পুনর্নবীকরণগুলি ছেড়ে দেয় এবং হতাশায়, সম্পূর্ণ এক্সচেঞ্জ (ডিসকভার দিয়ে শুরু) ব্যবহার করে স্ক্র্যাচ থেকে শুরু করার চেষ্টা করা হয়, কার্নেল একটি নতুন কনট্র্যাক এন্ট্রি স্থাপন করে এবং আরও কিছু সময়ের জন্য সম্পর্কিত প্যাকেটগুলি বুঝতে পারে ...

অবশ্যই যথেষ্ট, একবার আমি এর মতো কিছু যুক্ত করেছি:

iptables -A INPUT -i $OUT_IF -p udp --sport 67 --dport 68 -j ACCEPT

নবায়নগুলি চিরকালের জন্য কাজ করে বলে মনে হচ্ছে।

আপনি নিম্নলিখিত tcpdump সেমিডলাইন আরোগুলি দরকারী খুঁজে পেতে পারেন:

tcpdump -vv -s 1500 -i eth0.1 port 67 or port 68

দ্রষ্টব্য: -vvভার্বোস বিভক্তকারী আউটপুট জিজ্ঞাসা করে। eth0.1আমার WAN বন্দর (একটি "NAT এর বাইরে" ইন্টারফেস)।

ACK প্যাকেটে একটি আকর্ষণীয় বৈশিষ্ট্য হ'ল এলটি: ফিল্ড = প্রস্তাবিত / সেকেন্ডে সর্বাধিক অনুমোদিত ইজারা সময়। ডিএইচসিপি অনুরোধগুলি port 68 বন্দর থেকে পোর্ট 67 67 এ প্রেরণ করা হয় 67


আপনার গল্পটির কোনও অর্থ নেই। প্রাথমিক বা নবায়ন করা যাই হোক না কেন, ডিএইচসিপি এক্সচেঞ্জটি সর্বদা ক্লায়েন্ট দ্বারা পোর্ট 68 68 থেকে পোর্ট 67 67 এ পাঠানো হয় নির্দিষ্ট আইপিতে বা সম্প্রচার হিসাবে। এবং বহির্গামী এসিসিপিটি সহ, এটি সর্বদা কার্যকর হবে। বহির্গামী গন্তব্য থেকে একটি উত্তর সর্বদা ESTABLISHED নিয়মের মাধ্যমে আগত হওয়া উচিত, সুতরাং পুনর্নবীকরণটি কেবল ESTABLISHED নিয়ম দিয়ে চিরকালের জন্য কাজ করা উচিত কারণ প্রতিটি পুনর্নবীকরণ কনট্র্যাক রাষ্ট্রকে পুনর্নবীকরণ বা পুনরায় তৈরি করে।
মক্কি

একটি পুনর্নবীকরণ একটি অনুরোধ প্রেরণ openwrt:68 -> dhcpserver:67এবং ACK হবে dhcpserver:67 -> openwrt:68। এটি ESTABLISHED হিসাবে গণনা করা হবে এবং পাস হবে। যদি পুরানো কনট্র্যাকের রাজ্যের মেয়াদ শেষ হয়ে যায় তবে এটি একটি নতুন স্থাপন করে। যদি কোনও সমস্যা হয় তবে এটি কেবল ডিসকভার হিসাবে প্রাথমিক এক্সচেঞ্জের সাথেই হতে পারে 0.0.0.0:68 -> 255.255.255.255:67এবং অফারটি হবে dhcpserver:67 -> new-openwrt:68, যা ইস্টাব্লিশড হিসাবে গণনা করা হয় না। এটি কেবলমাত্র ডিএইচসিপি হিসাবে কাজ করে লিনাক্সে সাধারণত প্যাকেট সকেট সহ iptables বাইপাস করে, অন্যথায় একটি আগত নিয়ম প্রয়োজন হয় যা ইউডিপি পোর্ট 67 67 থেকে ইউডিপি পোর্ট 68 68 এ প্যাকেটগুলিকে অনুমতি দেয়
মক্কি

1
এছাড়াও আপনি বলছেন যে বেশ কয়েকটি নবায়ন সাফল্য পেয়েছে, তবুও প্রতিটি পুনর্নবীকরণ সফল হয় যা কন্ট্রাক রাষ্ট্রকেও পুনর্নবীকরণ করবে, সুতরাং যদি আপনার কনট্র্যাকের রাজ্যগুলি ২ ঘন্টা পরে শেষ হয় তবে একটি পুনর্নবীকরণ এটি আবার আরও ২ ঘন্টা আরও বাড়িয়ে দেয় এবং এভাবে এটি কখনই শেষ হয় না will । যাইহোক, ইউডিপি-র জন্য ডিফল্ট কনট্র্যাকের সময়সীমাটি কেবল 30 সেকেন্ড এবং 2 ঘন্টা নয় এবং আমি সন্দেহ করি যে ওপেনডাব্লুআরটি 2 ঘন্টার মধ্যে পরিবর্তিত হয়েছে যা পাগল হবে। সুতরাং আপনার গল্পটি আমার কাছে সম্পূর্ণ ত্রুটিযুক্ত বলে মনে হচ্ছে।
মক্কি

@ মেক্কি, মূল্যবান প্রতিক্রিয়ার জন্য ধন্যবাদ :-) এখন পর্যন্ত, আমার প্রতিক্রিয়াটি 4 বছরের পুরানো। প্রায় এক বছর আগে, আমার ASUS WL500G ডিলাক্স টার্মিনালি ফ্লাকি পেতে শুরু করেছিল (প্রায় 12 বছর রানটাইম পরে, ক্যাপাসিটার প্রতিস্থাপনের কারণে) এবং আমি হার্ডওয়ারের সাথে সেই পুরানো কামিকাজেকে চুক করেছিলাম। এই মুহুর্তে আমি একটি আধুনিক টিপি-লিংক এপিতে আরও একটি ওপেনডাব্লুআরটি চালাচ্ছি এবং কিছু চিন্তাভাবনার পরেও আমি আমার পুরানো ফায়ারওয়াল স্ক্রিপ্টগুলি পুনরায় ব্যবহার করতে পারি নি। ওপেনডব্লিউআরটি মনে হয় বাক্সের বাইরে খুব ভাল ফায়ারওয়াল রয়েছে ... আমি বলতে চাইছি আমি আমার অতীতের দাবিগুলি যাচাই করতে পারি না। আমি কেবল জানি অতিরিক্ত iptables নিয়ম সাহায্য করেছিল।
frr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.