Iptables लोकलहोस्ट पर पुनर्निर्देशित?


13

मान लीजिए कि मेरे पास एक नेटवर्क है जिसमें सर्वर से इंटरनेट के अंदर के सभी कनेक्शनों को रूट किया जाता है। मैं iptables कैसे सेट कर सकता हूं ताकि इंटरनेट पर आने वाले कनेक्शन को रूट करने के बजाय, यह उन्हें 8080 लोकलहोस्ट पोर्ट पर ले जाए। सभी मदद की सराहना की है।


समस्या यह है कि सरल पुनर्निर्देशन (गंतव्य आईपी पता NAT) के साथ आप मूल गंतव्य आईपी पता खो देंगे। क्या आप एक पारदर्शी HTTP प्रॉक्सी को सेटअप करना चाहते हैं या इसे HTTP के अलावा अन्य प्रोटोकॉल को भी प्रोसेस करना चाहिए?
पाबौक

इससे कोई फर्क नहीं पड़ता कि इसके पारदर्शी या नहीं
DankMemes

एक प्रॉक्सी के लिए सभी यातायात रीडायरेक्ट किया जा रहा है पारदर्शी प्रॉक्सी के लिए :) एक आधार
pabouk

यहाँ एक और जवाब है जो वास्तव में मेरी मदद करता है: unix.stackexchange.com/questions/111433/…
Wren T.

जवाबों:


6
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080

1
बोल्ड का उपयोग न करें ....

धन्यवाद! मैंने अभी तक यह कोशिश नहीं की है, लेकिन मुझे संदेह है कि जो मुझे याद आ रहा है वह आईपी अग्रेषण कमांड है। और अगली बार, कृपया कोड ब्लॉक का उपयोग करें, बोल्ड नहीं।
DankMemes

@AlexAntonov कृपया कोड ब्लॉक का उपयोग करें। संपादन मोड में अपना पाठ चुनें और कोष्ठक आइकन पर क्लिक करें।
DankMemes

@ZoveGames, क्षमा करें, इसे ठीक कर दिया।
एलेक्स एंटोनोव

2
मैंने इसके साथ प्रयोग किया। Ip_forward sysctl आवश्यक नहीं है। हालाँकि यहां path_localnet विकल्प है। मैं देख रहा हूं कि यह वास्तव में जुआन सेस्पीड्स का उत्तर है।
मैट जॉइनर

31

के साथ किया जा सकता है iptables, लेकिन केवल कर्नेल के साथ = = 3.6।

आपको करना होगा:

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forwardयह आवश्यक नहीं है, क्योंकि पैकेट को अग्रेषित नहीं किया जाता है, लेकिन यदि आप के लिए sctctl शामिल नहीं करते हैं route_localnet(जो केवल गुठली में काम करता है> = 3.6), तो पैकेट को कर्नेल द्वारा हटा दिया जाएगा क्योंकि यह इसे "मार्टियन" मानता है, आ रहा है बाहर से और गंतव्य का पता 127.0.0.1 है


यूप, वह काम करता है
निक डे ग्रीक

Path_localnet के बारे में नहीं जानता था। इतना पुराना स्कूल और यह पता नहीं चल सका कि ip_forward काम क्यों नहीं कर रहा (संदेह है कि इसकी जरूरत नहीं थी लेकिन फिर भी कोशिश की गई)।
dmourati

1
सुनिश्चित करें कि आप बचाते net.ipv4.conf.all.route_localnet=1हैं /etc/sysctl.confअन्यथा यह लगातार नहीं रहेगा और रिबूट के बाद चर 0 पर वापस जाएगा, जिससे पैकेट गिरा। तब यह पता लगाना बहुत मुश्किल होगा कि अब सब कुछ काम क्यों नहीं कर रहा है ... यह मेरे साथ हुआ। ;)
अर्थात

एक पुराने सवाल को माफ करना, लेकिन क्या IPv6 का net.ipv4.conf.all.route_localnetउपयोग करने के लिए बराबर है ip6tables?
केबियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.