El Capitan पर पोर्ट-फ़ॉरवर्डिंग करने का आधुनिक तरीका क्या है? (आगे पोर्ट 80 से 8080)


56

पुरानी उपयोगिता ipfwको मैक ओएस एक्स के हाल के संस्करणों में हतोत्साहित किया गया था और अब एल कैपिटन से चला गया है।

एल कैपिटान में पोर्ट अग्रेषण करने का आधुनिक तरीका क्या है?

मैं बस 8080 को पोर्ट करना चाहता हूं।


कृपया एक उत्तर स्वीकार करें।
इफ्रेन

जवाबों:


79

8080 पोर्ट के लिए सभी पोर्ट 80 ट्रैफ़िक को अग्रेषित करने के लिए, आप टर्मिनल कमांड लाइन से निम्नलिखित दर्ज कर सकते हैं।

echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Https://salferrarello.com/mac-pfctl-port-forwarding/ से लिया गया


1
पूरी तरह से काम किया!
अनुपम जैन

17
और उल्लिखित लेख से, इसे हटाने के लिए sudo pfctl -F all -f /etc/pf.conf, और अपने वर्तमान पोर्ट अग्रेषण नियमों को प्रदर्शित करने के लिए,sudo pfctl -s nat
ब्रैड पार्क्स

4
ध्यान रखें कि यह समाधान नियमों को नहीं जोड़ता है, लेकिन पहले से लोड किए गए किसी भी अन्य नियम को प्रतिस्थापित करता है, जिसमें pf.confफ़ाइल शामिल है
erandros

36

एल कैपिटन में बंदरगाहों को अग्रेषित करने का आधुनिक तरीका उपयोग कर रहा है pf। सभी पोर्ट के नीचे के उदाहरण में, 80 होस्ट एक ही होस्ट पर पोर्ट 8080 के लिए अग्रेषित किए जाते हैं। कृपया अपनी आवश्यकताओं के लिए पुनर्निर्देशन को समायोजित करें।

  1. एक एंकर फ़ाइल बनाएं। org.user.forwarding in /pStreet/etc/pf.anchors

    sudo touch /private/etc/pf.anchors/org.user.forwarding
    

    निम्नलिखित सामग्री और एक अनुगामी खाली लाइन के साथ

    rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    

    या

    rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    
  2. फ़ाइल /pStreet/etc/pf.conf को संशोधित करें लेकिन एक अनुगामी खाली लाइन रखें

    मूल फ़ाइल:

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    

    सेवा

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    rdr-anchor "org.user.forwarding"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
    
  3. पार्स करें और सुनिश्चित करें कि कोई त्रुटि नहीं है, यह सुनिश्चित करने के लिए अपनी एंकर फ़ाइल का परीक्षण करें:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. अब /System/Library/LaunchDaemons/com.apple.pfctl.plist से संशोधित करें

    <array>
        <string>pfctl</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    सेवा

    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    इसे पूरा करने के लिए आपको सिस्टम इंटीग्रिटी प्रोटेक्शन को निष्क्रिय करना होगा। फाइल को एडिट करने के बाद रीएनएबल एसआईपी। रिबूट करने के बाद आपका मैक पीएफ सक्षम हो जाएगा (यह -e विकल्प है)।

    वैकल्पिक रूप से आप यहां उत्तर के समान अपना स्वयं का लॉन्च डेमॉन बना सकते हैं: इंटरनेट साझा किए बिना इंटरनेट साझा करने के लिए सर्वर 5.0.15 का उपयोग करना

सिस्टम अपडेट के बाद या ऊपर दी गई कुछ मूल फाइलों को अपग्रेड किया जा सकता है और आपको सभी परिवर्तनों को फिर से लागू करना होगा।

यदि आप विभिन्न इंटरफेस में आगे बढ़ना चाहते हैं, तो आपको इसे /etc/sysctl.conf में सक्षम करना होगा:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

7
अब ऐसा करने के लिए एक साधारण आदेश क्यों नहीं है? यह अब बहुत जटिल है।
21

@klanomath - यह काम करता है और मैं पोर्ट x को पोर्ट वाई से पोर्ट करने के लिए 127.0.0.1 इत्यादि पर अग्रेषित कर सकता हूं, लेकिन मैं अपनी खिड़कियों के लिए पोर्ट को अग्रेषित करने में असमर्थ हूं, जो पैरलल डेस्कटॉप, किसी भी विचार पर चल रहा है? यहाँ मेरा सवाल stackoverflow.com/questions/40695684/…
सुधीर एन

वीएम को पोर्ट अग्रेषित करते समय काम नहीं करता है जो समानताएं डेस्कटॉप पर चल रही है
सुधीर एन

@sudhir आपने सफलतापूर्वक अपने नए प्रश्न से लिंक नहीं किया। डिफ़ॉल्ट रूप से एक Parallels VM सुरक्षा एहतियात के रूप में, नेटवर्क को दिखाई नहीं देता है। आप VM के कॉन्फ़िगरेशन में VM को दृश्यमान बनाने के लिए एक सेटिंग बदल सकते हैं। और याद रखें, pingनेटवर्क समस्याओं के निदान में आपका मित्र है।
तुलसी बोर्क

1
@ सुहिर का सवाल: apple.stackexchange.com/questions/262708/…
Efren

3

@ साल-फेर्रेलो उत्तर से समाधान का विस्तार करने के लिए, मैंने पहले से मौजूद प्रविष्टियों से समझौता किए बिना पुनर्निर्देशन को सक्षम या अक्षम करने के लिए दो सुपर-बेसिक शेल लिपियों का निर्माण किया ।pf

I. पहले खोजें कि आपके पास पहले से कौन सी प्रविष्टियाँ हैं:

sudo pfctl -s nat

मेरा आउटपुट ऐसा था:

No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

हमें कौन सी रुचियां हैं, वास्तविक प्रविष्टियां हैं इसलिए पहले दो सूचना लाइनें।

द्वितीय। enable.shस्क्रिप्ट बनाएँ :

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat

पहले दो पंक्तियों के बाद echoप्रविष्टियाँ हैं जो पहले से ही थीं। तीसरी पंक्ति नए पुनर्निर्देशन के साथ है - इस मामले में 80 से 8080। अंत में हम sudo pfctl -s natयह देखने के लिए कॉल करते हैं कि क्या परिवर्तन लागू किए गए थे।

तृतीय। disable.shस्क्रिप्ट बनाएँ :

इसी तरह enable.shहम स्क्रिप्ट बनाते हैं, लेकिन बिना 80-> 8080 रीडायरेक्ट के, लेकिन पहले से मौजूद प्रविष्टियों के साथ:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.