2016-08-25 1 views
0

내 설정은 태블릿 (Android 또는 iOS 기반 일 수 있음)에서 액세스 할 수있는 내장 장치입니다.블루투스 PAN 연결 - ARP가 작동하지 않습니다.

블루투스를 통해 장치에 액세스하고 태블릿이 인터넷에 액세스 할 수있는 장치로 인식 할 수 있도록 PAN 프로필 (NAP 역할)을 구현합니다.

DBus를 사용하여 Nap 서버를 Bluez에 등록합니다. 이것은 정상적으로 작동하며 Bluez는 태블릿이 연결되면 'bnep0'이라는 네트워크 인터페이스를 만듭니다.

iface bnep0 inet static 
    address 10.254.239.1 
    netmask 255.255.255.0 
    post-up service isc-dhcp-server start 
    pre-down service isc-dhcp-server stop 

내가/아래 /etc/udev/rules.d/50-bnep에 정의 된 규칙을 사용하여 인터페이스를 가지고 udev에를 사용 난을/etc/네트워크/인터페이스에 bnep0 인터페이스를 구성 .rules : 당신이 볼 수 있듯이

ACTION=="add", KERNEL=="bnep0" SUBSYSTEM=="net", RUN+="/sbin/ifup bnep0" 
ACTION=="remove", KERNEL=="bnep0", SUBSYSTEM=="net", RUN+="/sbin/ifdown bnep0" 

, 나는 시작/태블릿에 IP 주소를 제공하는 DHCP 서버를 중지/다운 이벤트를 인터페이스를 사용합니다.

내 DHCP 서버가 /etc/dhcp/dhcpd.conf에 다음 행으로 구성됩니다

subnet 10.254.239.0 netmask 255.255.255.0 { 
    range 10.254.239.2 10.254.239.254; 
} 

측면 참고로, 나는 또한은/etc/네트워크/인터페이스에서 네트워크 브리지 BR0을 만들 수 있습니다.

iface br0 inet manual 
    bridge_ports none 
    bridge_fd 0 
    bridge_stp off 

이 잘 작동 모든 : 그는 NAP 인터페이스를 등록하기 위해 Bluez 필요합니다. 타블렛이 내 장치와 블루투스 페어링을 수행하고 성공적으로 연결합니다.

4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 5c:e0:c5:af:7b:f6 brd ff:ff:ff:ff:ff:ff 
    inet6 fe80::984d:cdff:fe4b:65be/64 scope link 
     valid_lft forever preferred_lft forever 
9: bnep0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000 
    link/ether 5c:e0:c5:af:7b:f6 brd ff:ff:ff:ff:ff:ff 
    inet 10.254.239.1/24 brd 10.254.239.255 scope global bnep0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::5ee0:c5ff:feaf:7bf6/64 scope link 
    valid_lft forever preferred_lft forever 

그때 출시 : 나는 또한 태블릿 내 장치의 DHCP 서버에 쿼리 내 장치에서 주소 10.254.239.2

을 할당됩니다, 내가 'IP 요지 쇼'명령의 출력을 얻을 수 있음을 관찰 할 수있다 내 내장 장치의 응용 프로그램으로 주소 10.254.239.1, 포트 15137에 TCP 서버 소켓을 엽니 다. 응용 프로그램은 태블릿에서 들어오는 연결을 수신 대기합니다.

이제 TCP 클라이언트 소켓을 태블릿에서 IP 주소 10.254.239.1로 열려고합니다. 나는 인터페이스 bnep0이 IP 주소 10.254.239.1에 대한 ARP 요청을 받는다는 것을 (wireshark를 사용하여) 관찰 할 수있다. 그러나 내 장치는 ARP 응답을 생성하지 않으며 TCP 소켓에 연결하려고하면 태블릿 응용 프로그램이 시간 초과됩니다 .-(

마찬가지로 내 내장 장치에서 태블릿에 ping을 보내려고하면 내 장치 태블릿이 정상적으로 응답하는 10.254.239.2에 대한 ARP 요청을 보냅니다. 그러나 이후에 아무 핑 요청도 보내지 않으므로 ARP 응답이 장치에서 수신되지 않은 것처럼 보입니다

따라서 증상은 수신 인터페이스 bnep0의 ARP 패킷은 처리되지 않습니다.

실종 내용을 이해할 수 없습니다. 누구든지 나를 도울 수 있습니까?

답변

0

결국, 문제는 네트워크 브리지의 작동 방식에 대한 내 자신의 이해 부족이었습니다.

매우 유익한 HOWTO Persistently bridge traffic between two or more Ethernet interfaces (Debian)을 찾았습니다. 일단 네트워크 인터페이스가 브리지에 추가되면 IP 트래픽의 종단점으로 사용할 수 없다는 것을 분명하게 알려줍니다.

따라서, 내가 무엇을 할 필요하면 다리가 IP 엔드 포인트가되도록을/etc/네트워크/인터페이스 내 네트워크 인터페이스의 설정 변경했다 :

iface br0 inet static 
    address 10.254.239.1 
    netmask 255.255.255.0 
    bridge_ports none 
    bridge_fd 0 
    bridge_stp off 

주를 그 bnep0의 섹션 수 완전히 생략하십시오.

영감을 얻어도 ELinux - Bluetooth Network에게 감사드립니다.