मैकओएस सिएरा पर पोर्ट अग्रेषण


6

मैंने macOS Sierra पर स्विच कर लिया है और लूपबैक इंटरफ़ेस lo0 का उपयोग करके लोकलहोस्ट (http और https) के लिए काम करते हुए पोर्ट फ़ॉरवर्डिंग प्राप्त करने में सक्षम नहीं हूँ। मैं El Capitan के लिए मौजूदा निर्देशों का पालन कर रहा हूं लेकिन बिना सफलता के pf का उपयोग कर रहा हूं :

https://apple.stackexchange.com/a/230331/81267 , http://blog.brianjohn.com/forwarding-ports-in-os-x-el-capitan.html

असल में, मैं सेटअप ifconfig:

sudo ifconfig lo0 10.0.0.1 alias

फिर मैं एक pfएंकर फ़ाइल बनाता हूं :/etc/pf.anchors/myorganization

rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 80 -> 127.0.0.1 port 3000
rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 443 -> 127.0.0.1 port 7000

इसमें pf.conf का संदर्भ जोड़ें (इसे निष्क्रिय करना होगा और फिर SIP को ऐसा करने के लिए फिर से सक्षम करना होगा):

rdr-anchor "myorganization"
...
load anchor "myorganization" from "/etc/pf.anchors/myorganization"

मैं एंकरों का परीक्षण करता हूं:

sudo pfctl -vnf /etc/pf.anchors/myorganization

और परिणाम अच्छा लग रहा है:

...
TRANSLATION RULES:
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
rdr-anchor "myorganization" all
...

मैंने उन्हें सक्षम किया है:

sudo pfctl -evf /etc/pf.conf

मैंने localhostअपने / etc / host में जोड़ा है

127.0.0.1   localhost

लेकिन जब मैं ब्राउज़ करता http://localhostहूं तो मुझे मिलता है ERR_CONNECTION_REFUSED। यदि मैं http://localhost:3000साइट पर ब्राउज़ करता हूँ तो ठीक काम कर रहा है।

अद्यतन मैंने pf लॉगिंग चालू किया और 10.0.0.1 उपनाम के बिना कोशिश की:

rdr pass log (all) on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 3000
rdr pass log (all) on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 7000

और पहली बार मैंने http: // localhost मारा , मैं लॉग देखता हूं:

00:00:00.000000 rule 4294967295/8(ip-option): pass in on en0: (tos 0x0, ttl 1, id 59674, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.106 > 224.0.1.60: igmp v2 report 224.0.1.60
00:00:00.204784 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 32, options (RA))
    192.168.0.3 > 224.0.0.252: igmp v2 report 224.0.0.252
00:00:00.093232 rule 4294967295/8(ip-option): pass out on en0: (tos 0x0, ttl 1, id 11047, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.77 > 224.0.0.251: igmp v2 report 224.0.0.251
00:00:00.111608 rule 4294967295/8(ip-option): pass in on en0: (tos 0x0, ttl 1, id 60629, offset 0, flags [none], proto IGMP (2), length 32, options (RA))
    192.168.0.106 > 239.255.255.250: igmp v2 report 239.255.255.250
00:00:00.102426 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 32, options (RA))
    192.168.0.3 > 224.0.0.251: igmp v2 report 224.0.0.251
00:00:00.000120 rule 4294967295/8(ip-option): pass in on en0: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 48, options (RA))
    192.168.0.3 > 224.0.0.22: igmp v3 report, 2 group record(s) [gaddr 224.0.0.251 is_ex, 0 source(s)] [gaddr 224.0.0.252 is_ex, 0 source(s)]

इसके बाद हिट करने के लिए लोकलहोस्ट लॉग में कुछ भी नहीं जोड़ता है और मैं देखता हूं कि लूपबैक इंटरफ़ेस lo0 उस लॉग में नहीं दिखा, बस en0 (ईथरनेट), इसलिए मुझे यकीन नहीं है कि यह लॉग आउटपुट समस्या के लिए प्रासंगिक है। मैंने /etc/pf.anchors/myorganizationफ़ाइल में en0 और en1 जोड़ने का भी प्रयास किया लेकिन वही परिणाम।


कृपया कुछ विवरण जोड़ें क्योंकि यह प्रश्न खड़ा होने के बाद इसका कोई मतलब नहीं है। एक दूसरे आईपी को लो0 में जोड़ना जरूरी नहीं कि इस आईपी को लोकलहोस्ट हल करे। तो 10.0.0.1 उर्फ ​​का उद्देश्य क्या है? कुछ docker बात?
क्लानोमथ

अनिवार्य रूप से यह सवाल पूछ रहा है कि पोर्ट अग्रेषण कैसे करते हैं। मुझे लगता है कि कैसे करना है पर जवाब के लिए देख रहा हूँ
डैनियल Flippance

ब्राउज़र में 10.0.0.1:80/443 दर्ज करने से 127.0.0.1:3000/7000 के अनुरोध को पुनर्निर्देशित किया जाएगा! लेकिन मुझे संदेह है कि आपको यह काम लोकलहोस्ट के साथ मिलेगा: 80/443 चूंकि लोकलहोस्ट 127.0.0.1 से बंधा हुआ है और 10.0.0.1 से नहीं
क्लानोमथ

आप क्या सुझाव देते हैं कि मैं लोकलहोस्ट काम कर रहा हूं?
डैनियल फ्लिपेंस

पुन :: 10.0.0.1 - वह लाइन कुछ ऐसी थी जो मुझे यहां मिली थी serverfault.com/questions/102416/… और जो मुझे लगा कि वह उपयोगी थी। मैंने 10.0.01 उर्फ ​​के बिना एक ही कोशिश की है, लेकिन एक ही परिणाम के साथ
डैनियल फ्लिपेंस

जवाबों:


6

मेरे इस सवाल का जवाब सवाल का: एल कैप्टन पर बंदरगाह अग्रेषण करने के लिए आधुनिक तरीका क्या है? (फ़ॉरवर्ड पोर्ट 80 से 8080) अभी भी मान्य है।

हालांकि आपके सेटअप में कई घर्षण / गलतफहमियां हैं:

  • यदि आपके पास दूसरा http / https होस्ट नहीं है, तो lo0 के लिए अतिरिक्त नेटवर्क पता (यानी 10.0.0.1) स्थापित करने की कोई आवश्यकता नहीं है।
  • पुनर्निर्देशन:

    rdr pass on lo0 inet proto tcp from any to 10.0.0.1 port = 80 -> 127.0.0.1 port 3000
    

    केवल 10.0.0.1:80 से 127.0.0.1:3000 के अनुरोध को पुनर्निर्देशित करेगा।

    लोकलहोस्ट के लिए एक अनुरोध: for० (जो १२ and.०.०.१: not० और १०.०.०.१:) )० में अनुवाद नहीं है) को पुनर्निर्देशित नहीं किया जाएगा क्योंकि कोई उपयुक्त rdr ...रेखा नहीं है और आपको एक कनेक्शन त्रुटि मिलेगी।

  • यहां तक ​​कि 10.0.0.1 localhost/ etc / मेजबानों को लाइन जोड़ने से आपकी समस्या का निस्तारण नहीं होगा क्योंकि लोकलहोस्ट को हार्ड कोड 127.0.0.1 लगता है।

अपने रीडायरेक्ट को काम करने के लिए अनलोड करें pf.conf के साथ sudo pfctl -d। फिर अपने एंकर और pf.conf की जाँच करें:

rdr pass log (all) on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 3000
rdr pass log (all) on lo0 inet proto tcp from any to any port 443 -> 127.0.0.1 port 7000

तथा

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

तब पार्स / चेक myorganization साथ sudo pfctl -vnf /etc/pf.anchors/myorganizationऔर साथ pf.conf लोड sudo pfctl -evf /etc/pf.conf

कुछ दुर्लभ मामलों में आपको एक अतिरिक्त पंक्ति जोड़नी पड़ सकती है :

::1     127.0.0.1 

आपकी / etc / मेजबान फ़ाइल के लिए। हालांकि यह तर्कसंगत नहीं लगता है और केवल पुराने सिएरा संस्करणों पर लागू हो सकता है। मैं इसकी पुष्टि नहीं कर पाया हूं।


धन्यवाद, 10.0.0.1 उर्फ ​​को हटाने से समस्या ठीक हो गई। (यह निश्चित नहीं है कि शुरू में ऐसा करने से काम क्यों नहीं चला - अपडेट देखें - उस समय कुछ और गलत होने की संभावना थी। मेरे मामले में अतिरिक्त लाइन को / etc / मेजबानों में जोड़ना आवश्यक नहीं था।
डैनियल फ्लिपेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.