मैं डार्विन स्रोत में खुदाई कर रहा हूं ताकि टंटापोसक्स जैसे कर्नेल एक्सटेंशन को जोड़ने के बिना मैक / डार्विन पर वर्चुअल ईथरनेट इंटरफेस बनाने का कोई तरीका खोजने की कोशिश की जा सके। ऐसा करने में मुझे कुछ रोचक लगा है जो लगता है लेकिन शून्य प्रलेखन है।
यहाँ स्रोत फ़ाइल है:
https://opensource.apple.com/source/xnu/xnu-4570.41.2/bsd/net/if_fake.c.auto.html
फ़ाइल को पढ़ने से मुझे लगता है कि यह लिनक्स पर एक जोड़ी के समान है: दो इंटरफेस बनाएं और दूसरे में एक पॉप में जाने वाले पैकेट बनाएं।
एकमात्र समस्या यह है कि मैं पा सकता हूं कुछ भी तो नहीं इस बारे में इंटरनेट पर।
मैं पुष्टि करने में सक्षम हूं कि यह OSX Mojave के रूप में मौजूद है और मान लें कि वे पुराने संस्करणों पर भी मौजूद हैं:
# ifconfig feth0 create
feth0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 66:65:74:68:00:00
peer: <none>
media: autoselect
status: inactive
कुछ और देखने के बाद मुझे लगता है कि इन दोनों में से दो को जोड़ने के लिए ifconfig में एक अनजाने विकल्प मिल गए हैं:
# ifconfig feth0 peer feth1
# ifconfig feth0
feth0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 66:65:74:68:00:00
inet 9.9.9.9 netmask 0xffffff00 broadcast 9.9.9.255
peer: feth1
media: autoselect
status: active
अब जब मैं feth0 और tcpdump feth1 में एक IP जोड़ देता हूं, तो मुझे पैकेट्स का एक गुच्छा दिखाई देता है, जो mDNS घोषणाओं की तरह की चीजें हैं, जिनसे आप एक नए ईथरनेट लिंक में मैक की उम्मीद करेंगे।
मैं इसे यहाँ पोस्ट कर रहा हूँ क्योंकि मैं इस बारे में उत्सुक हूँ कि क्या किसी और को इस बारे में कोई सुराग है या कभी इसका उपयोग किया है।
संपादित करें: मैं अब पुष्टि कर सकता हूं कि यदि आप उन्हें सहकर्मी करते हैं और उन दोनों को ऊपर लाते हैं (ifconfig feth0 up, आदि) तो आप पैकेट को दोनों तरफ इंजेक्ट कर सकते हैं और उन्हें दूसरे में देख सकते हैं। ऐसा लगता है कि यह वास्तव में एक कर्नेल एक्सटेंशन की आवश्यकता के बिना परत 2 ईथरनेट टैप डिवाइस या वर्चुअल मशीन वीथ जोड़ी डिवाइस के रूप में काम कर सकता है। यह न केवल नेटवर्क वर्चुअलाइजेशन के लिए बहुत बढ़िया है, बल्कि इसे ऐप्पल के वर्चुअलाइजेशन एक्सटेंशन के साथ जोड़ा गया है, यह पूरी तरह से नेटवर्किंग क्षमताओं के साथ एक kext-free VM होस्ट की भी अनुमति देगा।
# 2 संपादित करें: हमने भी यह पाया है, जो बहुत अच्छी तरह से फेथ की तुलना में बहुत बेहतर दस्तावेज नहीं है। यह वर्चुअल ईथरनेट डिवाइस बनाने का अधिक आधिकारिक रूप से समर्थित तरीका पेश कर सकता है। हमें यह देखना होगा कि यह कैसे काम करता है। फेथ सामान हालांकि अभी भी दिलचस्प है!