पोर्ट 80 से 8080 पर पुनर्निर्देशित करें और इसे स्थानीय मशीन पर काम करें


61

मैंने अपनी मशीन पर पोर्ट 80 से 8080 के लिए ट्रैफ़िक पुनर्निर्देशित किया

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

यह मेरी अपनी मशीन को छोड़कर सारी दुनिया के लिए ठीक है। मैं एक डेवलपर हूं और मुझे अपने लिए 80 से 8080 पोर्ट को रीडायरेक्ट करना होगा।

मेरा आईपी है 192.168.0.111

मेरा वेब सर्वर पोर्ट 8080 पर चलता है

मैं उसी मशीन के http://192.168.0.111/बजाय वेबसाइट खोलना चाहता हूं http://192.168.0.111:8080/जहां सर्वर चलता है।


मुझे वशीकरण के लिए क्षमा करें, लेकिन पोर्ट 80 से 8080 को अग्रेषित करने का उद्देश्य क्या है?
ma11hew28

2
@mattdipasquale, सामान्य उपयोगकर्ता पोर्ट 80 तक नहीं पहुंच सकते, इसलिए आप एक सामान्य उपयोगकर्ता की तरह अजगर फ्लास्क जैसी वेब सेवा नहीं चला सकते।
क्रिश्चियन

आप सिर्फ वेब सर्वर को 80 पोर्ट करने के लिए क्यों नहीं बांधते?
डेविड फ़ॉस्टर

5
मैं इसका अनुमान लगाता हूं क्योंकि गैर-रूट उपयोगकर्ता 80/443 को पोर्ट नहीं कर सकता है और वह अपनी वेब सेवा को रूट के रूप में चलाना नहीं चाहता है ..
Pavel K.

जवाबों:


79

आपको OUTPUTचेन का उपयोग करने की आवश्यकता है क्योंकि लूपबैक इंटरफ़ेस के लिए पैकेट पैकेट के माध्यम से नहीं गुजरता है PREROUTING। निम्नलिखित काम करना चाहिए; इस रूप में चलाएं root:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

1
क्या पोर्ट 80 को ग्लोबली एक्सीलेबल होना आवश्यक है? मैंने आपके समाधान की कोशिश की, मेरा पोर्ट नंबर 8080 सुलभ है लेकिन 80 इसलिए ऐसा नहीं है। @ हेमायल
alper

2
यह काम नहीं किया, निश्चित नहीं कि इस पर मतदान क्यों किया जाता है
diyoda_

@Diyoda_ परिभाषित करें काम नहीं किया
हेमेयेल

3
मैं पुष्टि कर सकता हूं कि यह ubuntu 18.04
अहमद हम्दी

2
मेरे लिए उबंटू 18.10 पर काम नहीं किया
क्रिस्टोफर ब्रैडशॉ

6

सरल सिर्फ पोर्ट 80 और 8080 दोनों को अनुमति देने वाले iptables का उपयोग करें फिर 80 से 8080 को रीडायरेक्ट करें सुनिश्चित करें कि आप सही निक को असाइन कर रहे हैं .. उदाहरण के लिए मैं eth0 का उपयोग करता हूं

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

धन्यवाद! यह Ubuntu 19 पर काम कर रहा है
व्लादिमीर Ishenko

1
बाद iptable परिवर्तन सहेजने के लिए अच्छा होगाsudo apt-get install iptables-persistent
व्लादिमीर Ishenko

6

इसने मेरे लिए काम किया।

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

+1 उबंटू 18.04 (टीसीपी के लिए कम से कम) पर मेरे लिए काम करता है, ने पोर्ट 7000-> 7001 किया और पोर्ट 7001 पर सुनने वाले सर्वर को पोर्ट 7000 से आने वाले कनेक्शन प्राप्त हुए :)
hanshenrik

1
सही नेटवर्क इंटरफ़ेस eth0
थियो

4

इसके बजाय iptables, आप कोशिश कर सकते हैं: sudo ssh -gL 80:127.0.0.1:8080 localhost


2
यह एक विकल्प है, लेकिन यह बिल्कुल वैसा नहीं है जैसा मैं चाहता हूं क्योंकि मेरे पास पहले से ही पोर्ट 80 पर वेब सर्वर है। मैं इसे आईपबल के साथ करना पसंद करूंगा और वेब सर्वर को पोर्ट 80 पर चालू रखूंगा। मुझे लगता है कि मुझे सिर्फ PREROUTING
Max

हां - यह एक बंदरगाह संघर्ष का कारण होगा यदि आपके पास कुछ ऐसा है जिसे आप सुन रहे हैं जैसा कि मैक्स ने सुझाव दिया है। उपरोक्त उत्तर अधिक सामान्य मामला है।
cgseller

मुझे इस समाधान का प्रयास करते समय "कनेक्शन अस्वीकृत" मिलता है।
मिचस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.