Linux에서 무선 브리지에 유선


17

데비안 wheezy를 사용하여 Raspberry Pi를 브리지로 설정하려고합니다. 나는 hostapd.conf: (보안을 위해 일부 세부 사항이 변경되었으며 WEP가 좋지 않다는 것을 알고 있습니다) ...

interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0

그리고 이것은 /etc/network/interfaces:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0

USB 스틱의 깜박이는 표시등으로 인해 패킷이 교환되고 있음에도 불구하고 모든 것이 정상으로 보이지만 브리지 된 무선 연결과 연결할 수 없습니다.

모든 카드 / 장치가 hostap 모드로 실행되는 것은 아니라는 것을 읽었습니다. 한 방향으로 패킷을 전달하지 않습니다. 맞습니까? (정보가 약간 낡았습니다)-이 내 카드 :

[    3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[    3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[    3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[    3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[    3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[    3.830645] usb 1-1.3.1: SerialNumber: 12345

그래서 내가 여기서 잘못한 것은 무엇입니까?

업데이트 : 추가 조사를 수행하여 브리지를 가져올 수는 있지만 (유선) 이더넷 연결을 파괴하는 것처럼 보입니다. 예를 들어, RPi에서 :

시스템 부팅 ...

ping 192.168.62.1 

(라우터)-이 작동

무선 LAN 연결 시도 실패 ... 실패 (또는 Android 전화의 "연결이 제한됨"-좋지 않음)

brctl showmacs br0

이 시점에서 wlan0의 mac과 전화의 mac을 보여줍니다.

brctl addif br0 eth0 wlan0

이제 전화를 무선 네트워크와 연결할 수 있지만 ...

ping 192.168.62.1

... 실패

마찬가지로 네트워크의 다른 컴퓨터에서 더 이상 RasPi를 핑할 수 없습니다

달리는

ifconfig br0

브릿지가 패킷을 삭제하고 있음을 제안합니다 ...

어떤 아이디어?

추가 업데이트 : 이제 /etc/network/interfaces파일과 위의 순서에 따라 파일을 읽습니다.

auto lo eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

이것은 수퍼 유저에게는 분명한 주제이므로 걱정할 필요가 없습니다. 현상금과 행운을 빕니다, 나는 또한 대답이 무엇인지 알고 싶습니다.
혁신적인

무엇을 iw dev wlan0 info보여줍니까? 장치 ID의 인터넷 검색은 AP 모드에서이 장치를 실행하기 위해 최신 커널 또는 무선 모듈이 필요하다는 것을 보여줍니다. 참조 . 어떤 커널과 ath9k드라이버를 실행하고 있습니까?
gertvdijk

이 답변 도 참조하십시오 .
Thomas Guyot-Sionnest

답변:


10

쉬운 교량 :

당신의 상황을 위해 만들어진 소스 포지 프로젝트가 있습니다. http://sourceforge.net/projects/bridger/ 심지어 deb 패키지로 제공됩니다.

패킷 삭제와 관련하여 :

  1. iptables가 기본 드롭으로 설정되어 있는지 확인 했습니까? sudo iptables --list 이 유형의 상자에 대해 "ACCEPT, ACCEPT, ACCEPT"라고 표시해야합니다. 그것이 문제라면 끄십시오.

  2. 당신은 심지어 패킷을 전달하고 있습니까? "net.ipv4.ip_forward = 1"행이 /etc/sysctl.conf에 주석 처리되어 있지 않은지 (기본값) 네트워킹을 다시 시작하십시오.

  3. 무선 동글 에서는 무차별 모드를 지원하지 않습니다 . (대상이 아닌 패킷을 받아 들일 수 없음을 의미)

순수한 다리 대 공유 다리 :

  1. iface br0 inet dhcp공유 브리지를 나타내며 , 이는 브리지 자체가 IP를 가져오고 트래픽의 엔드 포인트가 될 수 있음을 의미합니다.

  2. 순수한 브리지 는 IP 주소를 얻지 않고 두 인터페이스 사이의 트래픽 만 전달합니다.

  3. 공유 브리지 샘플 / etc / network / interfaces 구성 파일 (Debian / Ubuntu)

#이 파일은 시스템에서 사용 가능한 네트워크 인터페이스를 설명합니다
# 및 활성화 방법. 자세한 내용은 interfaces (5)를 참조하십시오.

# 루프백 네트워크 인터페이스
자동 소호
iface lo inet 루프백

# eth0와 wlan0 사이의 브릿지
자동 br0
iface br0 inet dhcp
  사전 IP 링크 설정 eth0
  사전 IP 링크 설정 wlan0
  사전 brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  pre-up ip addr flush dev eth0
  pre-up ip addr flush dev wlan0
  포스트 다운 IP 링크 설정 eth0
  포스트 다운 IP 링크 설정 wlan0
  포스트 다운 IP 링크 설정
  포스트 다운 brctl delif br0 eth0 wlan0
  포스트 다운 brctl delbr br0

네트워크를 다시 시작하십시오. sudo /etc/init.d/networking restart복잡한 네트워크 구성을 변경 한 후에는 다시 부팅 할 때 모든 것이 올바르게 다시 시작되도록하는 대신 재부팅하기가 더 쉽습니다.

라우팅 문제가 있다고 생각합니다.

  1. 로 테스트하여 DNS를 원인 으로 제거하십시오ping 8.8.8.8 . 이것이 작동하면 네트워크에 DNS 문제가있을 수 있습니다.

  2. 게이트웨이를 확인 하여 sudo ip route희망 당신이 볼 default via 192.168.1.1 dev br0 proto dhcp(게이트웨이를 가정하는 것은 192.168.1.1)입니다. 누락되었거나 잘못된 경우 수정하십시오 sudo ip route add default via 192.168.1.1. 다시 테스트하십시오.ping 8.8.8.8

  3. 공유 브리지 IP갱신dhclient br0 하고ping 8.8.8.8

  4. '슬레이브'인터페이스ifconfig확인하고 eth0 및 wlan0에 IP 주소가 없는지 확인하십시오. 그들은 지금 다리의 일부입니다. 그렇다면 모든 구성 파일에서 제거하고 정적 0.0.0.0 또는 다른 것으로 설정하십시오.

이 중 어느 것도 작동하지 않으면 데비안 브리징 앱을 사용해보십시오. 작동하지 않으면 무선 동글이 무차별 모드를 지원하지 않습니다. (위 참조)

여기에서 언제라도 작동하면 재부팅하고 여전히 작동하는지 확인하십시오.


네, 모든 체인이 ACCEPT로 설정되어, 인터페이스 파일에 대한 최신 업데이트를보고하십시오
adrianmcmenamin

내가의 dhclient BR0을 적용하고 지금은 그냥 자동 :) 만드는 방법을 해결해야한다는 eth0를 0.0.0.0로 잠겨 지정하는 경우이 지침은 의미에서 적어도 일
adrianmcmenamin

좋아, 나는 그것을 가지고 있고 rc.local 스크립트 (본질적으로 나는 hostapd를 다시 시작해야 함)를 통해 약간의 경이로운 포커를 가지고 실행한다-그래서 당신은 현상금을 얻는다. 그러나 이제 같은 상자에있는 오징어 서버가 고장났습니다.하지만 그것에 대해 묻지 않았으므로 다른 질문이 필요합니다.
adrianmcmenamin


이 예에서 eth0wlan0설정 은 무엇입니까 ? 특히 SSID 및 인증을 wlan0어떻게 설정 합니까?
Ian

6

데비안 리눅스와 Openwrt에서 작동하는 무선 브리지가 있으므로이 문제에 매우 익숙합니다.

한 가지 중요한 명령을 놓쳤습니다. 802.11 / 무선 브리징에 필요한 4 개 주소 프레임 (때로는 잘못 / 역사적으로 WDS라고 함)을 전송하도록 무선 드라이버에 지시하는 것을 잊었습니다. "iw dev wlan0 set 4addr on"명령으로이를 수행하십시오. 브리지를 불러 오기 전에 브리지의 데비안 인터페이스 파일에서 "pre-up"문을 사용하여 적용하십시오. 4 주소 프레임 모드는 드라이버 지원이 필요하며 일부 오래된 crappy 802.11 드라이버 또는 하드웨어는이를 지원하지 않을 수 있습니다.

또한 브리지 된 인터페이스에 특히 영향을주는 Linux 커널의 버그로 인해 문제가 복잡해 졌을 수도 있습니다. 데비안 버전이 오래되어 영향을 받기 때문에이 버그를 직접 접하고 소스에서 내 자신의 wpa_supplicant를 컴파일해야했습니다. wpa_supplicant와 hostapd는 공통 코드 기반을 공유하지만 이것이 wpa_supplicant뿐만 아니라 hostapd에도 영향을 미쳤는지 확실하지 않습니다.

이 문제에 대한 해결책은 다음과 같습니다.

https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040

나는 이것이 2.5 릴리스에 있다는 인상을 받고 있으며 현재 2.6 소스에 있다는 것을 알고 있습니다. 현재 데비안 버전은 2.4입니다. wpasupplicant 및 hostapd 패키지를 업데이트하려면 데비안 프로젝트를 점검하십시오.

다음은 인터페이스 wlan0과 eth0 사이에 무선 브리지가있는 WPA / WPA2를 사용하는 무선 브리지 클라이언트의 샘플 구성입니다. 호스트는 br0 인터페이스에서 DHCP 주소를 얻습니다 (IP 주소가없는 경우 "dhcp"를 "manual"로 바꿉니다). AP가 되고자하는 상황의 경우 hostapd.conf에 interface = 및 bridge = 명령을 포함시키고 아래 wpa- * 명령을 생략하십시오.

/ etc / network / interfaces 파일에서 :

allow-auto br0
iface br0 inet dhcp
    bridge_ports wlan0 eth0
    bridge_stp off
    bridge_waitport 5
    bridge_fd 0
    wpa-ssid mynetwork
    wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
    wpa-iface wlan0
    wpa-bridge br0
    pre-up iw dev wlan0 set 4addr on
    post-down iw dev wlan0 set 4addr off

또한 wpa_supplicant가 버전 2.5 이상인지 확인하십시오. wpa_supplicant 2.4 및 현재 커널 버전에서는 작동하지 않습니다.

또한 부트시 브리지 인터페이스가 나타나지 않는 ifup에는 현재 레이스 버그가 있지만 다른 문제입니다.


3

ip 전달이 필요한 것 같습니다.

시험 cat /proc/sys/net/ipv4/ip_forward

0문제가있는 경우 :echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forwardIPv4 라우팅, NAT 등을위한 것입니다. 브리지는 네트워크 스택에서 한 계층 아래에서 작동합니다.
Thomas Guyot-Sionnest

0

브리징은 인터페이스가 모든 패킷을 수신 할 때만 작동 할 수 있습니다. 현재 설정은 브리지 구성이 아닌 라우터 구성을 설명 할 수 있습니다.

eth0 및 wlan0에는 IP 주소 (0.0.0.0을 의미)가 없어야하며 원하는 경우 br0에 항상 IP 주소를 사용할 수 있습니다.

공식 문서도 있습니다 : http://wiki.debian.org/BridgeNetworkConnections


1
나는 이것이 오래된 게시물이라는 것을 알고 있지만 다른 것을 검색하는 동안 그것을 발견했기 때문에 브리지 인터페이스에 관한 한 브리지 인터페이스에 IP 주소가 없거나 IP 주소가 없는지는 중요하지 않다고 언급했습니다. Linux에서 브리지 된 인터페이스는 ARP 패킷 (OSI 계층 2)도 릴레이합니다. 모든 스위치는 해당 스위치 포트에서 허용되는 것으로 브리지의 다른쪽에 연결된 여러 장치를 매핑합니다. 내 참조 S. 미국을위한 하나의 기본 USA NAP를 포함한 상위 계층 데이터 센터의 고 가용성 배포 등 라우터, 브리지, 방화벽, 리눅스 서버 구축 경험
jetole

0

wlan0 구성

vi / etc / network / 인터페이스

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

vi /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.