आर्क लिनक्स पर, मैं w00 से प्राप्त eth0 (कनेक्टेड राउटर से जुड़ा हुआ) साझा करना चाहता हूं, मैंने ट्यूटोरियल पढ़ा है, लेकिन मैं अन्य उपयोगकर्ताओं के रूप में कमांड प्रेमी नहीं हूं और पूरी तरह से समझ में नहीं आया।
आर्क लिनक्स पर, मैं w00 से प्राप्त eth0 (कनेक्टेड राउटर से जुड़ा हुआ) साझा करना चाहता हूं, मैंने ट्यूटोरियल पढ़ा है, लेकिन मैं अन्य उपयोगकर्ताओं के रूप में कमांड प्रेमी नहीं हूं और पूरी तरह से समझ में नहीं आया।
जवाबों:
अद्यतन करें
यह संभव नहीं है कि वायरलेस (क्लाइंट उर्फ स्टेशन मोड) और वायर्ड इंटरफेस के बीच लाइनक्स-एथ 5k-devel पर इस पुल के बीच पुल हो ।
इसके बजाय NAT सेट करना चाहिए:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
फिर आपको खुद को आईपी पते सौंपने होंगे:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
एक dhcp सर्वर स्थापित करें और इसकी कॉन्फिग फ़ाइल में (/etc/dhcpd.conf या कुछ इसी तरह) निम्न पाठ जोड़ें।
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.120;
option routers 10.0.0.1;
option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}
फिर इसे /etc/init.d/dhcpd प्रारंभ करें
और बस!
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
सबसे पहले आप एक ब्रिज इंटरफ़ेस बनाते हैं, मैं एक मनमाना नाम का मायब्रिज चुनता हूँ और फिर उसमें इंटीफ्यूज़ जोड़ देता हूँ।
आपको एक नए आईपी पते का अनुरोध करना चाहिए (यह केवल तभी आवश्यक है जब आप ब्रिजिंग डिवाइस के लिए एक वैध आईपी प्राप्त करना चाहते हैं):
dhclient -d mybridge
वाईफ़ाई इंटरफ़ेस को ब्रिजiw
करने के लिए आप 4addr को सक्षम करने के लिए टूल का उपयोग कर सकते हैं :
# iw dev <wifiInterface> set 4addr on
अर्थात:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
अब यह काम करना चाहिए। आप पुलों का उपयोग करके दिखा सकते हैं:
# brctl show
4addr
मोड वाईफाई को वायर्ड ईथरनेट की तरह पर्याप्त व्यवहार करता है जो ब्रिजिंग काम करेगा। इसके बिना, NAT के बिना ब्रिजिंग काम नहीं करेगी।
4addr
आवश्यकता है कि एक वायरलेस लिंक के दोनों पक्ष इसका समर्थन करते हैं (यह मानते हुए कि आप एक वाईफ़ाई एक्सटेंडर को लागू करने की कोशिश कर रहे हैं)
निर्भर करता है कि एपी आपके लिए कितना महत्वपूर्ण है:
1) यह केवल आपके ज्ञात लिंक लेयर एड्रेस (और इसलिए ब्रिजेड पैकेट्स का नहीं) से आपके पास आने वाले पैकेट्स को देखना चाहेगा। 2) यह वास्तव में और भी स्मार्ट हो सकता है, और पता है कि आईपी एड्रेस किस लिंक लेयर एड्रेस का होना चाहिए (कारण यह डीएचसीपी जानता है और इसका निरीक्षण करता है)
यदि 1 + 2 दोनों सत्य हैं, तो आपको वास्तव में IP NAT, DHCP, जैसे कुछ चाहिए।
लेकिन अगर केवल 1) मामला है, तो आप लिंक-लेयर पते को नकली कर सकते हैं, और इसे यहां बताए गए दूसरी दिशा में दाईं ओर मैप पर उल्टा कर सकते हैं:
https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC
4drr जैसा कि अन्य उत्तरों में वर्णित है, निश्चित रूप से एडेप्टर / ड्राइवर द्वारा समर्थित होने पर सबसे अच्छा तरीका है, लेकिन उन सभी को नहीं करता है। NAT कुछ चीजों के लिए काम कर सकता है, लेकिन लैन पर दोनों तरीकों से उचित संचार प्राप्त करना समस्याग्रस्त हो जाएगा (उदाहरण के लिए एक प्रिंटर को कनेक्ट करना या NAT के दूसरी तरफ अन्य IoT उपकरणों तक पहुंचना)। प्रसारण / मल्टीकास्ट (पूर्व-ऑटो-डिस्कवरी, बोनजॉर) पर निर्भर कुछ भी NAT के माध्यम से विफल हो जाएगा।
विकल्प एक एआरपी प्रॉक्सी (parprouted) में वर्णित के रूप उपयोग कर रहा है https://wiki.debian.org/BridgeNetworkConnectionsProxyArp । मैंने इसे एक रास्पबेरी पाई पर एक प्रिंटर के लिए स्थापित किया है और यह एक आकर्षण की तरह काम करता है (मैंने post-up
इसे एक आईपी एड्रेस प्राप्त करने के लिए कमांड में 10 सेकंड की नींद जोड़ी है , इसे मेरे पुराने के धीमेपन के साथ करना पड़ सकता है आरपीआई ...)
ब्रिज वलान और 4addr:
ब्रिजिंग wlan0 एक दर्द है। आप सामान्य तौर पर इसे ब्रिज इंटरफेस में नहीं जोड़ सकते (brctl रिटर्न "ऑपरेशन की अनुमति नहीं है"), और एआरपीपी और डीएचसीपी संघर्षों की एक बड़ी गड़बड़ी में वर्चुअलबॉक्स "ब्रिजिड" फ़िल्टर परिणामों का उपयोग करते हैं। इसका कारण यह है कि 802.11 फ्रेम में डिफ़ॉल्ट रूप से केवल तीन पते होते हैं: दोनों वायरलेस डिवाइस (लैपटॉप और एपी) के मैक पते और अंतिम प्राप्तकर्ता (ईथरनेट में)। यह हमेशा माना जाता है कि केवल एक ही संभव प्रवर्तक है।
802.11 चौथे, प्रवर्तक के मैक पते को ले जा सकता है, और इसका उपयोग WDS मोड में रिपीटर्स द्वारा किया जाता है। लिनक्स पर भी इस सुविधा को सक्षम किया जा सकता है, iw का उपयोग करके, और इस मोड को सक्षम करने से wlan0 को ब्रिज इंटरफेस में उपयोग किया जा सकेगा, साथ ही साथ वर्चुअलबॉक्स ब्रिजिंग नेटवर्किंग के साथ:
iw dev wlan0 set 4addr on
हालाँकि, 4addr सक्षम होने के साथ, आपको AP द्वारा पूरी तरह से अनदेखा किए जाने की संभावना है: एसोसिएशन सफल होता है, लेकिन सभी डेटा फ़्रेम ईथर में गायब हो जाते हैं। यह सुरक्षा कारणों से हो सकता है (क्योंकि स्रोत मैक पते को खराब करने के लिए यह बहुत मुश्किल है। हाँ।) मेरे राउटर (ओपन आरआरजी में) में, वायरलेस एपी इंटरफ़ेस के लिए "डब्ल्यूडीएस" मोड को सक्षम करना आवश्यक है, मेरे लिए प्रतिबंधित एक डब्ल्यूडीएस डिवाइस जोड़ें। लैपटॉप का मैक पता, और इसे लैन ब्रिज में जोड़ें। 4addr पैकेट अब काम करते हैं।
इसके साथ एक और समस्या है, हालांकि - राउटर अब लैपटॉप से तीन-पते वाले पैकेट को खारिज कर देता है, जो कि असुविधाजनक हो सकता है (हर बार WLAN नेटवर्क बदलने पर 4addr को चालू करने के लिए)। कार्यपट्टी को लैपटॉप पर, उसी डिवाइस से जुड़ा एक दूसरा वायरलेस इंटरफ़ेस जोड़ना है, लेकिन एक अलग मैक पते के साथ। पहले के कॉन्फ़िगरेशन को पूर्ववत करें:
iw dev wlan0 set 4addr off
फिर, एक दूसरा इंटरफ़ेस जोड़ें - नाम को मनमाने ढंग से चुना गया था - एक अलग मैक पते के साथ:
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up
यहां राउटर में कॉन्फ़िगर किए गए WDS डिवाइस पते से मेल खाना चाहिए; इसके अलावा, यह किसी भी मान्य मैक पते हो सकता है। Wlan0 का मूल मैक तब "सामान्य" उपयोग के लिए रहता है।
यह एक ही समय में wlan0 और wds.wlan0 दोनों का उपयोग करना संभव है - हालांकि मैंने केवल एक ही एपी को दो बार संबद्ध करने का परीक्षण किया है, अलग-अलग एपी के लिए नहीं। मुझे लगता है कि वे कम से कम एक ही चैनल पर होने की आवश्यकता होगी।
कुछ लोगों ने पूछा है कि जब VirtualBox WiFi को "बस ठीक" पुल कर सकता है तो इसका उपयोग क्यों करें। जवाब यह है कि वर्चुअलबॉक्स वर्चुअल मशीन के मैक पते नहीं भेजता है; बल्कि, यह MAC लेयर पर NAT भी करता है। - 2014-08-22
सीधा वलान पुल
कुछ परिस्थितियों में, आप wlan_kabel का भी उपयोग कर सकते हैं। यह पैकेट सॉकेट का उपयोग करता है सीधे ईथरनेट डिवाइस के साथ wlan * -devices को पुल करने के लिए। हालाँकि, आप केवल wlan_kabel के साथ एक बार में एक ही मैक को पा सकते हैं। इसमें एक्सेस पॉइंट्स द्वारा वर्जित होने का दोष नहीं है, क्योंकि केवल wlan डिवाइस के मूल मैक का उपयोग किया जाता है। आपके मामले में इसका मतलब यह होगा कि wlan0 का उपयोग केवल एक वीएम द्वारा किया जा सकता है और मेजबान द्वारा भी नहीं। आप यहाँ wlan_kabel प्राप्त कर सकते हैं । यह macvlans समाधान के समान है ।
IPvlan के साथ ब्रिजिंग
IP Vlan में एक पुल की सीमा नहीं है जिसका उपयोग नेटवर्क विवरणों को पुल करने के लिए किया जा सकता है कि इसका उपयोग कैसे किया जा सकता है यहां पाया जा सकता है
बहाना विकल्प
लिनक्स रूटिंग के बजाय पुल को प्राप्त करने के लिए iptables-masquerade और ip_forward के साथ उपयोग किया जा सकता है लेकिन जैसा कि उल्लेख किया गया है कि ip_forward को सक्षम करने की आवश्यकता है और यह राउटर की तरह linux कार्य करेगा, इसे सावधानी से सेटअप करने की आवश्यकता है क्योंकि यह कुछ सुरक्षा चिंता का परिचय दे सकता है।
# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24 -j MASQUERADE
इंटरफ़ेस br0 तब wlan0 नेटवर्क तक पहुँच प्राप्त करेगा
महत्वपूर्ण और संबंधित
इसके अलावा, और बहुत महत्वपूर्ण है, आपको ifconfig, brctl , इत्यादि जैसे अप्रचलित, पदावनत आदेशों का उपयोग नहीं करना चाहिए । Iproute2 सुइट में इस सभी के लिए कमांड शामिल हैं, जिसमें वर्चुअल इंटरफेस सेट करना (कुछ जिसके लिए हमें एक बार ओपनवैप का उपयोग करना था) और पुल बनाना शामिल है। यदि आप नहीं जानते कि आईपी के साथ एक पुल कैसे स्थापित किया जाए, तो हम यहां जाते हैं
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0
ip addr add 10.173.10.1/24 dev br0
ip link set br0 up
आदेशों के इस सेट के साथ, हम एक वर्चुअल इंटरफ़ेस बनाते हैं जिसे tap0 कहा जाता है, फिर br0 नामक एक ब्रिज, फिर एंक्लेव eth0 और टैप0 टू ब्रिज, जिस पर हम 10.173.10.1 का IP पता असाइन करते हैं, फिर सभी को लाते हैं। इंटरफेस को ऊपर लाने के तीन अलग-अलग उदाहरणों के लिए (tap0, eth0 और br0 के लिए) आवश्यक हैं।
इस काम को करने के लिए ट्रिक का उपयोग करना है। प्रॉक्सी का उपयोग करें, जो आपके पीसी (आपके वीएम / लिनक्स कंटेनर / नेटवर्क नेमस्पेस) को एआरपी प्रश्नों का उत्तर देने के लिए नहीं देता है।
दूसरे शब्दों में, अपने हार्डवेयर इंटरफ़ेस और अपने वर्चुअल इंटरफ़ेस के बीच IPv4 फॉरवर्डिंग का उपयोग करके, आपको लगता है कि आप अपने VM / LXC / NNS को अपने LAN से कनेक्ट कर सकते हैं जैसे कि यह एक भौतिक इंटरफ़ेस था, लेकिन यह सच नहीं है: आप बिल्कुल भूल रहे हैं मौलिक एआरपी ट्रैफ़िक, जो कि वास्तव में लैन को संचालित करने की अनुमति देता है। तो, समस्या यह है: अगर मैं IPv4 ट्रैफ़िक को सही ढंग से अग्रेषित करता हूं, तो मैं ARP ट्रैफ़िक को कैसे अग्रेषित कर सकता हूं, ताकि मेरा VM / LXC / NNS काम कर सके? छल-छद्म का उपयोग करने के लिए चाल है।
इसका पूरा जवाब बोहदी ज़ज़ेन के ब्लॉग में है , जिसमें खुलासा शीर्षक: ब्रिज वायरलेस कार्ड्स हैं। वह एक अप्रचलित पैकेज का उपयोग करता है, uml- यूटिलिटीज, कमांड टनल के माध्यम से एक वर्चुअल इंटरफेस बनाने के लिए: यह एकमात्र ऐसा कमांड है जिसके लिए वह uml-उपयोगिताओं का उपयोग करता है, ताकि आप सुरक्षित रूप से पैकेज डाउनलोड करने की उपेक्षा कर सकें, और कमांड I का उपयोग कर सकें। एक टैप या ट्यून इंटरफ़ेस बनाने के लिए ऊपर लिखा गया है, जो भी आप चाहें, बस उसी के अनुसार कमांड को संशोधित करें। फिर अपने LXC के लिए एक वेथ पेयर बनाएं, और अब tap0 और veth0 के बीच एक पुल बनाएं। Bohdi Zazen द्वारा बताए गए साधारण टैप0 इंटरफ़ेस के बजाय, br0 नामक यह पुल, जिसके लिए आपको प्रॉक्सी-arp होना चाहिए।
स्रोत: askubuntu.com , nullroute.eu.org , firejail.wordpress.com , superuser.com
मुझे प्रॉक्सी आर्प दृष्टिकोण पसंद आया , लेकिन मूल प्रश्न आर्क लिनक्स को निर्दिष्ट करता है। यहाँ एक रास्पियन कार्यान्वयन का एक आर्क लिनक्स संस्करण है । मैंने डेबियन विकी के मूल दृष्टिकोण को यहां तक लाने का प्रयास करने का प्रयास किया, जिसमें सफलता का उपयोग किए बिना ExecUpPost
और ExecDownPre
बिना नेटवर्क के उल्लेख किया गया । सब कुछ कमांड लाइन पर काम किया, लेकिन प्रोफाइल के भीतर नहीं।
कदम:
IPForward=yes
। मैंने वायरलेस नेटवर्क इंटरफ़ेस का प्रबंधन करने के लिए WPA Supplicant का उपयोग किया ।enable-reflector=yes
भीतर सेट करके mDNS रिले सक्षम करें /etc/avahi/avahi-daemon.conf
; प्रारंभ करें और सक्षम करें avahi-daemon.service
यदि यह पहले से ही नहीं है।[Unit]
Description=proxy arp routing service
Documentation=/raspberrypi//q/88954/79866
[Service]
Type=forking
# Restart until wlan0 gained carrier
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
ExecStartPre=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 --timeout=6 --quiet
ExecStartPre=/usr/bin/echo 'systemd-networkd-wait-online: wlan0 is online'
# clone the dhcp-allocated IP to eth0 so dhcrelay will relay for the correct subnet
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip addr add $(/usr/bin/ip -4 -br addr show wlan0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
ExecStartPre=/usr/bin/ip link set dev eth0 up
# v minus sign
ExecStart=-/usr/bin/parprouted eth0 wlan0
ExecStopPost=/usr/bin/ip link set dev eth0 down
ExecStopPost=/usr/bin/bash -c '/usr/bin/ip addr del $(/usr/bin/ip -4 -br addr show eth0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
[Install]
WantedBy=wpa_supplicant@wlan0.service
[Unit]
Description=DHCRelay Service
After=network-online.target parprouted_bridge.service
Type=simple
[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/dhcrelay -d -4 -iu wlan0 -id eth0 $(/usr/bin/journalctl -b -u systemd-networkd.service | /usr/bin/grep -Po "via\s+\K\\d+\\.\\d+\\.\\d+\\.\\d+")'
[Install]
WantedBy=multi-user.target
इस दृष्टिकोण ने मेरे लिए एक Raspberry Pi Model B + w / ArchLinuxArm पर RT5370 चिपसेट के साथ USB WiFi अडैप्टर को स्पोर्ट करने का काम किया। चूंकि पीआई केवल ईथरनेट के साथ एक प्रिंटर को वाईफाई प्रदान करेगा, मैं इसे किसी न किसी हैंडलिंग के लिए मजबूत होना चाहूंगा, इसलिए मेरा अगला कदम एसडी कार्ड को केवल पढ़ने के लिए कॉन्फ़िगर करना होगा ।