2012-10-17 14 views
19

मेरे पास लिनक्स पीसी के साथ एक होम नेटवर्क है, जिसमें सभी आईपीटीबल चल रहे थे। मुझे लगता है कि मेरे लैन को लिनक्स गेटवे/फ़ायरवॉल के पीछे रखना आसान है, इसलिए मैंने अपने राउटर और लैन और कॉन्फ़िगर किए गए आईपीटीबल्स के बीच एक पीसी (फेडोरा, नो गुई के साथ) डाला है। यहां कोई समस्या नहीं है, INPUT केवल डीएनएस को http (और कुछ स्थानीय सामान) की अनुमति देता है, अग्रेषण ठीक काम करता है: LAN इंटरनेट से कनेक्ट होता है।iptables फॉरवर्ड और INPUT

लेकिन मेरा सवाल यह है: क्या फॉरवर्ड सभी बाहर से, या केवल बंदरगाहों को INPUT के साथ कॉन्फ़िगर किया गया है? फॉरवर्ड और इनपुट एक साथ काम करते हैं या वे अलग हैं?

यह मेरा iptables है:

*nat 
:PREROUTING ACCEPT [16:1336] 
:INPUT ACCEPT [14:840] 
:OUTPUT ACCEPT [30:2116] 
:POSTROUTING ACCEPT [0:0] 
-A POSTROUTING -o p1p1 -j MASQUERADE 
COMMIT 
# Completed on Tue Oct 16 09:55:31 2012 
# Generated by iptables-save v1.4.14 on Tue Oct 16 09:55:31 2012 
*filter 
:INPUT DROP [0:0] 
:FORWARD DROP [0:0] 
:OUTPUT ACCEPT [91:9888] 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p UDP --dport 53 -j ACCEPT 
-A INPUT -p TCP --dport 53 -j ACCEPT 
-A INPUT -s 192.168.1.0/24 -i p1p1 -p tcp -m multiport --dports 20,21 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.2.0/24 -i p3p1 -p tcp -m multiport --dports 20,21 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.1.0/24 -i p1p1 -p tcp -m tcp --dport 5000:5100 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.2.0/24 -i p3p1 -p tcp -m tcp --dport 5000:5100 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -i p1p1 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.2.0/24 -i p3p1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -s 192.168.1.0/24 -i p1p1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -i p1p1 -p tcp -m multiport --dports 20,21,443 -j DROP 
-A INPUT -i p1p1 -p tcp --dport 5000:5100 -j DROP 
-A INPUT -i p1p1 -p icmp -m icmp --icmp-type 8 -j DROP 
-A FORWARD -s 192.168.2.0/24 -j ACCEPT 
-A FORWARD -d 192.168.2.0/24 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
-A OUTPUT -j LOG --log-prefix "denied out: " 

COMMIT 

p1p1 (.1.x) मेरी बाहरी nic है, p3p1 (.2.x) आंतरिक है।

उत्तर

55

इनपुट, फॉरवर्ड, और आउटपुट अलग हैं। एक पैकेट केवल तीन श्रृंखलाओं में से एक को मारा जाएगा।

यदि गंतव्य से इस सर्वर है, तो यह INPUT श्रृंखला को हिट करता है। यदि इसका स्रोत से इस सर्वर पर है, तो यह OUTPUT को हिट करता है। यदि इसका स्रोत और गंतव्य दोनों अन्य मशीनें हैं — इसे से — पर रूट किया जा रहा है तो यह फॉरवर्ड श्रृंखला को हिट करता है।

+1

तो, अगर मैं सही ढंग से समझता हूं, तो मेरे पास सुरक्षित (प्रकार) सुरक्षित है, लेकिन फॉरवर्ड अब सबकुछ इस तरह से देता है? मुझे आशा थी कि यातायात को पहली बार INPUT द्वारा फ़िल्टर किया गया था, और फिर अग्रेषित किया गया था। – Ray

+0

बाहर से यातायात, यानी। – Ray

+0

@ रे राइट। आपके बॉक्स के माध्यम से जा रहा एक पैकेट केवल फॉरवर्ड किया जाता है। यह इनपुट → फॉरवर्ड → आउटपुट नहीं करता है। –

59

RedHat एक great doc about iptables (एक छोटा सा लंबे) है, लेकिन कवर करने के लिए विषय जटिल है और वहाँ बहुत से अलग उपयोग के मामलों है कि मैं नहीं दिख रहा है कि यह कैसे से बचने के लिए कर रहे हैं।

iptables kernel routing

यहाँ अध्याय के बारे में FORWARD and NAT Rules है। यह कहा गया है:

:

उदाहरण के लिए, यदि आप आगे भेजे HTTP करना चाहते 172.31.0.23 पर अपने समर्पित अपाचे HTTP सर्वर के लिए अनुरोध करता है, जड़ उपयोगकर्ता के रूप में निम्न आदेश का उपयोग

~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80 

यह इस प्रकार होता है:

  • आपके लिनक्स गेटवे को आपके राउटर से एक पैकेट प्राप्त होता है। पैकेट शीर्षक है:
    • स्रोत: x.x.x.x:y (इंटरनेट & स्रोत पैकेट संचरण के लिए प्रयोग बंदरगाह से इस आईपी)
    • गंतव्य: 192.168.1.1:80 (अपने linux गेटवे IP संभालने बाहरी एनआईसी पर, यानी p1p1)
  • आपका लिनक्स गेटवे पर एक मिलान खोजने के लिए श्रृंखला लागू करता है।मान लें कि आप टाइप किया है कि क्या इसके बाद के संस्करण है, पैकेट नियम से मेल खाता है और फिर कहता है DNAT समारोह (गंतव्य नेटवर्क एड्रेस ट्रांसलेशन) जो प्रारंभिक 192.168.1.1:80 से पैकेट शीर्षक गंतव्य में परिवर्तन करने के लिए (-j छलांग) 172.31.0.23:80 पर।
  • फिर, पैकेट रूटिंग निर्णय पर आता है। पैकेट गंतव्य अब 172.31.0.23:80 है।
    • आपका लिनक्स गेटवे स्वयं से पूछता है: क्या यह मेरे लिए है (192.168.1.1:80)? नहीं, इसलिए मैं को INPUT श्रृंखला पर नहीं भेजूंगा।
    • => मैं इसे FORWARD श्रृंखला पर भेजूंगा।
  • जब से तुम अपने स्थानीय नेटवर्क (टेबल filter श्रृंखला FORWARD) पर आगे सभी नियम निर्धारित किया है, पैकेट अपने स्थानीय अपाचे HTTP सर्वर के लिए सही ढंग से अग्रेषित किया जाना चाहिए (उदाहरण के लिए)।

आशा है कि यह थोड़ा और समझने में मदद करेगा कि आंतरिक रूटिंग iptables के साथ कैसे काम करती है।

संबंधित मुद्दे