डेबियन पर पोर्ट अग्रेषण / पुनर्निर्देशन कैसे करें?


12

मेरे दो सवाल हैं।

प्रश्न 1: मेरी डेबियन मशीन में आईपी 192.168.57.28 के साथ इंटरफेस एथ 3 है। अगर कोई 192.168.57.28:1234 से जुड़ने की कोशिश करता है, तो मैं किसी अन्य मशीन के अनुरोध को कैसे पुनर्निर्देशित करूं: 192.168.57.25:80?

प्रश्न 2: अगर मेरी डेबियन मशीन में दो इंटरफेस हैं: eth3 192.168.57.28 के साथ और कुछ डायनेमिक आईपी के साथ ppp0 और कोई पोर्ट 1234 पर ppp0 के माध्यम से जुड़ने की कोशिश करता है, मैं 192.68.57.25:80 पर अनुरोध को कैसे पुनर्निर्देशित करूं?

मैंने यह कोशिश की है:

$ iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 192.168.57.25:80
$ echo 1 > /proc/sys/net/ipv4/ip_forward

लेकिन यह काम नहीं करता है।

जवाबों:


12
iptables -A PREROUTING -t nat -i eth3 -p tcp --dport 1234 -j DNAT --to-destination 192.168.57.25:80
iptables -A FORWARD -p tcp -d 192.168.57.25 --dport 80 -j ACCEPT
iptables -A POSTROUTING -t nat -s 192.168.57.25 -o eth3 -j MASQUERADE

पहला निर्दिष्ट करता है कि पोर्ट 1234 के सभी आने वाले टीसीपी कनेक्शन को आंतरिक मशीन 192.168.57.25 के पोर्ट 80 पर भेजा जाना चाहिए। यह नियम अकेले काम पूरा नहीं करता है क्योंकि iptables आने वाले सभी कनेक्शनों से इनकार करता है। फिर हम eth3 से 1234 को पोर्ट करने के लिए आने वाले कनेक्शन को स्वीकार करते हैं जो दूसरे नियम से पबलीक आईपी के साथ इंटरनेट से जुड़ता है। हम अग्रेषित श्रृंखला में दूसरा नियम जोड़ते हैं कि पैकेट को 192.168.57.25 के पोर्ट को अग्रेषित करने की अनुमति दी जाए।

संपादित करें: पोस्टिंग जोड़ा गया।

कनेक्शन का ट्रैक रखने के लिए। अन्यथा बाहरी मेजबान को आंतरिक आईपी 192.168.57.25 दिखाई देगा, जिसका कोई सुराग नहीं है।

EDIT2: बस संकेत मिल गया है कि यह --to- गंतव्य (sry) के बजाय-गंतव्य होना चाहिए


मैंने आपके सुझाव की कोशिश की है, लेकिन यह काम नहीं करता है। मैं 192.168.57.25 और वेबपेज रिटर्न के लिए ब्राउज़ कर सकता हूं, लेकिन 192.168.57.28:1234 पर ब्राउज़ करना काम नहीं करता है।
डैनजाल सालबर्ग एडलरसन

@ DANjalSalbergAdlersson ने मेरे पोस्ट को अपडेट किया (कुछ याद किया।)
डेवल्कर

3
मैंने आपके सुझाव की कोशिश की, लेकिन बात नहीं बनी। फिर मैं इसे पिछले एक में बदल देता हूं: iptables-POSTROUTING -t nat -j MASQUERADE, फिर इसने काम किया!
डैनजाल सालबर्ग एडलरसन

8

दयावल्कर और डैनजल सालबर्ग एडलरसन को धन्यवाद। शपथ ग्रहण के घंटों के बाद, iptables के साथ पोर्ट अग्रेषण अंततः काम करता है। (डेबियन पर परीक्षण किया गया)

बैश स्क्रिप्ट

#!/bin/bash

IPTBL=/sbin/iptables

IF_IN=eth0
PORT_IN=40022

IP_OUT=172.16.93.128
PORT_OUT=22

echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTBL -A PREROUTING -t nat -i $IF_IN -p tcp --dport $PORT_IN -j DNAT --to-destination ${IP_OUT}:${PORT_OUT}
$IPTBL -A FORWARD -p tcp -d $IP_OUT --dport $PORT_OUT -j ACCEPT
$IPTBL -A POSTROUTING -t nat -j MASQUERADE

क्या कोई कारण है कि "-s 192.168.57.25" पोस्टिंग लाइन से छोड़ा गया था?
एडवर्ड्समार्क

यह भी "-o eth3" छोड़ा गया
एडवर्ड्समार्क

मुझे -s और -o को POSTROUTING लाइन पर वैकल्पिक लगता है। SSL का उपयोग करने पर कोई विचार? मैंने आपकी स्क्रिप्ट का संदर्भ देते हुए यहां प्रश्न पूछा: superuser.com/questions/1387902/…
edwardsmarkf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.