การเชื่อมต่อ Wifi กับ Ethernet บน Ubuntu ไม่ทำงาน


22

เมื่อใช้ Windows ฉันสามารถเชื่อมต่อ wifi ผ่านแล็ปท็อปของฉันเชื่อมต่ออีเธอร์เน็ตได้ดังนั้นอุปกรณ์อีเธอร์เน็ตหลากหลายชนิดจึงสามารถซ่อนสัญญาณ wifi ของฉัน (Raspberry Pi, Xbox และอื่น ๆ ) ตอนนี้ฉันกำลังพยายามทำสิ่งเดียวกันภายใน Ubuntu นั่นคือการตั้งค่าจะเป็น:

Wireless Router ---> Wifi สำหรับแล็ปท็อป ---> เชื่อมต่อกับ Ethernet ---> อุปกรณ์ที่ต้องการเชื่อมต่ออินเทอร์เน็ตเข้ากับพอร์ต Ethernet

ตอนนี้ฉันพยายามใช้งาน Ubuntu โดยใช้ brctl

ฉันใช้คำสั่งด้านล่าง:

sudo brctl addif br0 eth0 wlan0

และได้รับข้อผิดพลาดต่อไปนี้:

can't add wlan0 to bridge br0: Operation not supported

ฉันหวังว่าบางคนสามารถช่วยได้เพราะฉันปฏิเสธที่จะเชื่อในสิ่งที่ฉันสามารถทำได้ใน windows อย่างง่ายดายไม่สามารถทำได้ใน Linux

หากคุณต้องการข้อมูลเพิ่มเติมโปรดแจ้งให้เราทราบ ขอบคุณ


ปัญหาคล้ายกันมากถูกจัดการใน [ askubuntu.com/questions/155041/ …
Legionair

คำตอบ:


10

สิ่งนี้ไม่สามารถทำได้ คุณไม่สามารถเชื่อมต่อการเชื่อมต่อไคลเอนต์ WiFi หากทำได้เราไม่ต้องการ WDS เราแค่เชื่อม

ปัญหานั้นง่ายมาก - จุดเชื่อมต่อถูกห้ามโดย specifaction WiFi จากการรับส่งสัญญาณออกอากาศผ่านเครือข่าย WiFi เว้นแต่จะมีบางอย่างที่อนุญาตการส่งสัญญาณนั้น นี่เป็นที่ระลึกส่วนใหญ่ตั้งแต่สมัยที่เครือข่าย WiFi ช้ามากและมีความปลอดภัยต่ำหากมี

บริดจ์มีการเชื่อมต่อไคลเอ็นต์กับจุดเชื่อมต่อเท่านั้น วิธีนี้อนุญาตเท่านั้นจุดเชื่อมต่อเพื่อส่งทราฟฟิกที่ผูกไว้กับบริดจ์ เนื่องจากเครื่องใด ๆ ที่เชื่อมต่อกับบริดจ์ไม่ใช่ไคลเอนต์ของจุดเชื่อมต่อจุดเชื่อมต่อจึงไม่มีเหตุผลที่จะส่งปริมาณข้อมูลที่เชื่อมโยงกับพวกเขาผ่านลิงก์ WiFi ดังนั้นมันจะไม่ทำเช่นนั้น

น่าเสียดายที่ WiFi นั้นพอเพียงกับอีเธอร์เน็ตซึ่งมันง่ายที่จะคาดหวังให้มันทำหน้าที่เหมือนอีเธอร์เน็ต แต่มันแตกต่างกันพอที่จะกัดคุณ

การกำหนดค่า WDS เป็นการอนุญาตเฉพาะสำหรับจุดเข้าใช้งานเพื่อส่งทราฟฟิกที่ไม่ถูกผูกมัดสำหรับไคลเอ็นต์ใด ๆ เมื่อปลายทั้งสองรองรับ WDS พวกเขาจะรวมที่อยู่ของจุดเชื่อมต่อระหว่างทางและที่อยู่ของปลายทางให้สิทธิ์แก่จุดเชื่อมต่อเพื่อส่งทราฟฟิก

คุณต้องใช้สิ่งอื่นนอกเหนือจากการเชื่อมโยงเพื่อทำสิ่งนี้ ตัวอย่างการกำหนดเส้นทางด้วย NAT เป็นต้น คุณยังสามารถใช้โหมดที่อยู่สี่แบบหากปลายทั้งสองด้านของลิงก์ WiFi รองรับ


3
คุณสามารถแก้ปัญหานี้ได้โดยการเขียนที่อยู่ mac ด้วยebtables
ccarton

ฉันสังเกตเห็นว่ามีคนคนหนึ่งที่นี่บอกว่าคุณสามารถทำได้ในอูบุนตู .. และฉันก็ทำบางอย่างเช่นใน windows ด้วยแม้ว่าคุณจะบอกว่ามันเป็นไปไม่ได้ดังนั้นบางทีคุณอาจอธิบายความแตกต่างระหว่างสิ่งนี้กับสิ่งนี้ ใน Windows เมื่อคุณทำเช่นนี้youtube.com/watch?v=96Z1_6rX5qU WiFi เชื่อมต่อกับอินเทอร์เน็ตไม่มีสายเคเบิลในตัวเชื่อมต่ออีเธอร์เน็ตหรือสายเคเบิลของคอมพ์อื่นในตัวเชื่อมต่อ Ethernet จากนั้นเลือกแด็ปเตอร์ WiFi และ Ethernet อะแดปเตอร์มันสะพานพวกเขา n แล้วคอมพิวเตอร์เครื่องอื่นสามารถเชื่อมต่อสายเคเบิลและใช้การเชื่อมต่ออินเทอร์เน็ตแล็ปท็อปยังคงเป็นลูกค้า WiFi ผมคิดว่า (และไม่ได้จุดเชื่อมต่อ)
barlop

1
@DavidSchwartz หากบุคคลมีแล็ปท็อปที่ไม่มีการทำงานแบบไร้สายและไม่มีสวิตช์เครือข่ายที่จะเสียบเข้ากับอินเทอร์เน็ต แต่แล็ปท็อปอีกเครื่องมีอินเทอร์เน็ตไร้สายและไม่มี usb ไร้สายสำรอง ดูเหมือนว่าทางออกเดียวคือการเชื่อมต่อ fakery หากแล็ปท็อปทั้งสองมีอะแดปเตอร์เครือข่ายไร้สายที่ใช้งานได้พวกเขาทั้งสองสามารถเชื่อมต่อกับจุดเชื่อมต่อไร้สายหลักได้โดยไม่จำเป็นต้องใช้จุดเชื่อมต่อพิเศษและ WDS .. ฉันใช้บริดจ์เชื่อมต่อแบบไร้สาย
barlop

1
ไม่ถูกต้อง สำหรับผู้เริ่มต้น WDS เป็นการเชื่อมต่อ WiFi ไม่เหมือนคนอื่น ๆ ประการที่สองมีอุปกรณ์น่ารัก ๆ เหล่านี้ที่เรียกว่าไคลเอนต์บริดจ์หรือมีเดียบริดจ์เชื่อมต่อผ่าน AP และเชื่อมต่อแจ็คต่อสาย 3-5 สายอย่างโปร่งใสซึ่งอาจเป็นฮับเป็นต้นเพื่อให้แน่ใจว่ามีข้อ จำกัด เกี่ยวกับวิธีการทำงานและ พวกเขาสามารถเชื่อมต่อ MAC ได้กี่เครื่อง แต่ในที่สุด ... มีวิธีหนึ่งคือ แม้กระทั่ง Linux จะให้คุณใช้โหมด WDS เป็น STA หากคุณตั้งค่า 4addr เป็นโหมดบนอุปกรณ์ผ่านคำสั่ง iw และไดรเวอร์ให้คุณทำเช่นนั้นได้ คุณสามารถสะพานได้ ... มันเพิ่งได้รับ ... จังหวัด
Svartalf

1
@DavidSchwartz: การกำหนดเส้นทางหรือไม่ อย่างจริงจัง? นี่คือคำใบ้ แอปพลิเคชันสามารถมี 500+ โหนดในเครือข่าย คุณสามารถทำให้การกำหนดเส้นทางทำงานได้อย่างสวยงามหรือไม่? "WDS จริง" ฉันมั่นใจได้หรือไม่ว่ามันจะทำงานร่วมกับ Cisco, Aruba, Ubiquiti และอื่น ๆ ได้หรือไม่ ถ้าเป็นเช่นนั้นใช่ ... ถ้าไม่ใช่ ... หลักฐานเป็นปัญหานอกกรอบ ฉันได้รับมันทำงานค่อนข้างดีกับความบ้าคลั่งที่ฉันกำลังพยายามด้วยโหมด WDS-Station ... แต่มันจะทำงานกับสิ่งอื่นนอกเหนือจาก hostapd หรืออุปกรณ์ Linux ที่ได้รับมาที่คล้ายกันหรือไม่
Svartalf

3

ฉันมีปัญหาที่คล้ายกันกับ LXC ฉันได้แก้ไขปัญหาการเชื่อมต่ออุปกรณ์ไวไฟ ก่อนอื่นคุณต้องมีอุปกรณ์อีเธอร์เน็ตสำรองในคอมพิวเตอร์ เคล็ดลับคือการสร้างเส้นทางจากอุปกรณ์อีเธอร์เน็ตไปยัง wifi

ในไฟล์เซิร์ฟเวอร์ให้เปลี่ยน / etc / network / interfaces เลือกเครือข่ายที่ไม่ได้ใช้สำหรับโฮสต์เสมือนของคุณเช่น 10.0.0.0 กำหนด IP หนึ่งตัวให้กับอินเทอร์เฟซอีเทอร์เน็ตสำรองของคุณที่นี่คือ eth0 เชื่อมต่อเป็นแบบนี้:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

เมื่อเสร็จแล้วคุณสามารถไปทาง MASQUERADE ตามคำตอบของ Kostyantyn ที่นี่มาก่อน สิ่งเหล่านั้นควรอยู่ใน rc.local หรือในสคริปต์ที่คุณต้องใช้ในการบูตเครื่องหรือก่อนเริ่มต้นโดเมนเสมือน:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

ในเซิร์ฟเวอร์เสมือนกำหนดค่า IP แบบคงที่ใน / etc / network / interfaces ฉันใช้เครือข่าย 10.0.0.0 ฉันจะเริ่มใช้จาก. 2 เมื่อคุณสร้างโฮสต์เสมือนเพิ่มเติมคุณอาจใช้ 3 และอื่น ๆ หากคุณมีจำนวนมากคุณสามารถพิจารณาติดตั้งเซิร์ฟเวอร์ dhcp สำหรับสิ่งเหล่านั้น .1 เป็นเกตเวย์ตามที่กำหนดค่าไว้ก่อนหน้า

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

กำหนดค่าเซิร์ฟเวอร์ DNS ของฉันคือเราเตอร์เครือข่ายใน /etc/resolv.conf:

nameserver 192.168.1.1

หวังว่านี่จะช่วยได้


นี่คือเล่ห์เหลี่ยมเลเยอร์ 3 และไม่ใช่ "การเชื่อมต่อ" จริง ๆ ในขณะที่คุณใช้ iptables คุณกำลังกำหนดเส้นทาง
Svartalf

0

ฉันคิดว่าสิ่งที่คุณต้องการไม่ใช่สะพาน แต่อย่างใด:

หรือ

  • MASQUERADE (หาก WLAN มี IP แบบไดนามิก - นั่นคือการเปลี่ยนแปลง IP)

1) สร้างforwarding_enable_file.shโดยมีเนื้อหาดังต่อไปนี้:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) เรียกใช้ไฟล์:

sudo ./forwarding_enable_file.sh

3) ในส่วนที่เหลือของโฮสต์ระบุกล่อง Ubuntu ของคุณเป็นเกตเวย์หมายเหตุ: หากกล่องบางกล่องกำลังใช้งาน Linux คุณสามารถทำได้ด้วยคำสั่งนี้:

sudo ip route add default via ubuntu-ip

โดยที่ubuntu-ipควรถูกแทนที่ด้วยที่อยู่ IP ของ ubuntu-box เช่น 192.168.1.10

4) ลองส่งไอพีบางตัวเช่น 8.8.8.8 จากโฮสต์อื่น ๆ :

ping 8.8.8.8

5) ตรวจสอบการตั้งค่า DNS ของคุณด้วยการส่งโดเมนบางครั้งเช่น:

ping slivkoed.ru

6) ถ้าขั้นตอนที่ 4) ใช้งานได้และ 5) ทำไม่ได้คุณมีปัญหากับการตั้งค่า DNS ของคุณ ในกรณีดังกล่าวเรียกใช้ด้วยสิทธิ์พิเศษ:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

เรียกใช้ขั้นตอนที่ 5) อีกครั้ง

ข้อมูลเพิ่มเติมเกี่ยวกับ resolv.conf สามารถพบได้ที่นี่


ขึ้นอยู่กับสิ่งที่คุณต้องการ หากคุณต้องการความโปร่งใส (คลื่นมือ) คุณไม่ต้องการมัน อย่างจริงจัง. คุณต้องการพฤติกรรมที่เห็นได้จากสิ่งต่าง ๆ เช่นบริดจ์บริดจ์ TEW640-MB ที่เลิกใช้แล้วของ Trendnet (เซสชันโหมด STA เชื่อมต่อกับพอร์ตอีเธอร์เน็ต 4 พอร์ต) สิ่งนี้น่าจะเกิดขึ้นกับการทำงานของโหมด WDS (4addr) หรือกับ ebtables MAC masquerading (ซึ่งไม่สับสนกับสิ่งที่คุณโพสต์) - ทั้งสองอย่างนี้มีความเจ็บปวดและปัญหาของตัวเอง
Svartalf

-1

คุณต้องลดการเชื่อมต่อลงก่อนที่จะทำการเชื่อมต่อ

ifconfig eth0 ลง

ifconfig wlan0 down


1
ยังคงได้รับข้อผิดพลาดเดียวกันกับอินเทอร์เฟซทั้งสองลง
Zac Powell

@Zac Powell คุณใช้ Network-Manager หรือไม่ ฉันมีประสบการณ์ในอดีตที่อาจรบกวน ในกรณีนี้คุณสามารถลองหยุดบริการและนำมันกลับมาอีกครั้งหลังจากนั้น
Legionair

ใช่ฉันตกลงฉันควรลองนำพวกเขาทั้งสองลงและหยุดผู้จัดการเครือข่ายแล้วทำ Birdge แล้วนำทุกอย่างกลับมา?
Zac Powell

ใช่ด้วยservice network-manager stopแล้วทำสิ่งที่คุณเริ่มต้นอีกครั้งด้วยservice network-manager start
Legionair

ยังไม่ทำงาน: / ทุกอย่างถูกปิด แต่ยังได้รับข้อผิดพลาดเดียวกัน
Zac Powell

-4
sudo iw dev wlan1 set 4addr on

สนใจอธิบายว่าวิธีนี้แก้ปัญหาของ OP ได้อย่างไร
Braiam

@Braiam คำตอบของฉันค่อนข้างจะอธิบายว่าทำไมสิ่งนี้จึงใช้ได้ผลถ้า AP รองรับ
David Schwartz

น่าเศร้าที่มันใช้ไม่ได้กับ AP หลาย ๆ ตัว สำหรับวิธีที่มันอาจแก้ไขปัญหาของเขาถ้ามันทำงานได้ดีกับ AP ส่วนใหญ่ก็คือมันช่วยให้ความสามารถของ AP ผ่านการเพิ่ม MAC เพิ่มเติมไปยังหมายเลขที่ให้ไว้ในแต่ละเฟรม 802.11 เพื่อถ่ายทอดเฟรมมากกว่า MAC ที่ผ่านการรับรอง
Svartalf

จากคำตอบอื่น: serverfault.com/a/554663/280693
jhutar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.