wlan0을 eth0에 브리징

wlan0을 eth0에 브리징

Arch Linux에서는 eth0(브리지 라우터에 연결됨)이 wlan0에서 받은 연결을 공유하도록 하고 싶습니다. 튜토리얼을 읽었지만 다른 사용자처럼 명령에 능숙하지 않고 완전히 이해하지 못합니다.

답변1

업데이트

무선(스테이션 모드라고도 불리는 클라이언트)과 유선 인터페이스 사이를 연결하는 것은 불가능합니다.linux-ath5k-devel의 이 스레드에 따르면.

NAT 설정

대신 NAT를 설정해야 합니다.

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

IP 할당

그런 다음 자신에게 IP 주소를 할당해야 합니다.

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

dhcp 데몬 설치

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;
}

dhcpd 시작

그런 다음 시작하십시오. /etc/init.d/dhcpd start

그리고 그게 다야!

작동하지 않는 브리징 설정에 관심이 있는 경우에만 아래를 읽으십시오.


brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0

먼저 브리지 인터페이스를 생성하고 임의의 이름을 선택합니다.마이브리지그런 다음 인터페이스를 추가하십시오.

새 IP 주소를 요청해야 합니다(브리징 장치 자체에 대한 유효한 IP를 얻으려는 경우에만 필요함).

dhclient -d mybridge

답변2

에게브리지 와이파이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

답변3

브리지 wlan 및 4addr:

wlan0 브리징은 고통스럽습니다. 일반적으로 이를 브리지 인터페이스에 추가할 수 없으며(brctl이 "작업이 허용되지 않음"을 반환함) VirtualBox의 "브리지" 필터를 사용하면 ARP 및 DHCP 충돌이 발생합니다. 그 원인은 802.11 프레임에는 기본적으로 3개의 주소, 즉 무선 장치(노트북 및 AP)와 최종 수신자(이더넷의 경우)의 MAC 주소만 포함되어 있기 때문입니다. 항상 가능한 발신자는 단 한 명뿐이라고 가정합니다.

802.11은 네 번째인 발신자의 MAC 주소를 전달할 수 있으며 이는 중계기에 의해 WDS 모드에서 사용됩니다. 이 기능은 Linux에서도 iw를 사용하여 활성화할 수 있으며, 이 모드를 활성화하면 vlan0을 브리지 인터페이스는 물론 VirtualBox 브리지 네트워킹에서도 사용할 수 있습니다.

iw dev wlan0 set 4addr on

그러나 4addr을 활성화하면 AP에서 완전히 무시할 가능성이 높습니다. 연결은 성공하지만 모든 데이터 프레임은 에테르 속으로 사라집니다. 이는 보안상의 이유일 수 있습니다(원본 MAC 주소를 스푸핑하는 것이 정말 어렵기 때문입니다. 예). 내 라우터(OpenRG 실행)에서 무선 AP 인터페이스에 대해 "WDS" 모드를 활성화하고 내 네트워크로 제한된 WDS 장치를 추가해야 합니다. 노트북의 MAC 주소를 LAN 브리지에 추가합니다. 이제 4addr 패킷이 작동합니다.

그러나 여기에는 또 다른 문제가 있습니다. 이제 라우터는 랩톱에서 3개 주소 패킷을 거부합니다. 이는 다소 불편할 수 있습니다(WLAN 네트워크가 변경될 때마다 4addr을 전환해야 함). 해결 방법은 랩톱에 동일한 장치에 연결되어 있지만 MAC 주소가 다른 두 번째 무선 인터페이스를 추가하는 것입니다. 먼저 이전 구성을 실행 취소합니다.

iw dev wlan0 set 4addr off

그런 다음 다른 MAC 주소를 사용하여 두 번째 인터페이스(이름은 임의로 선택됨)를 추가합니다.

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 장치 주소와 일치해야 합니다. 그 외에는 유효한 MAC 주소가 될 수 있습니다. 그런 다음 wlan0의 원래 MAC는 "정상적인" 사용을 위해 유지됩니다.

wlan0과 wds.wlan0을 동시에 사용하는 것이 가능합니다. 하지만 저는 다른 AP에 연결하는 것이 아니라 동일한 AP에 연결하는 것을 두 번만 테스트했습니다. 적어도 같은 채널에 있어야 할 것 같아요.

어떤 사람들은 VirtualBox가 WiFi를 "괜찮게" 연결할 수 있는데 왜 이것을 사용하는지 묻습니다. 대답은 VirtualBox가 가상 머신의 MAC 주소를 보내지 않는다는 것입니다. 오히려 MAC 계층에서도 NAT를 수행합니다. – 2014-08-22

직접 무선랜 브리지

특정 상황에서는 wlan_kabel을 사용할 수도 있습니다. 패킷 소켓을 사용하여 wlan* 장치를 이더넷 장치와 직접 연결합니다. 그러나 wlan_kabel을 사용하면 한 번에 하나의 MAC만 브리지할 수 있습니다. WLAN 장치의 원래 MAC만 사용하기 때문에 액세스 포인트에 의해 차단되는 단점이 없습니다. 귀하의 경우 이는 wlan0을 호스트가 아닌 하나의 VM에서만 사용할 수 있음을 의미합니다. 당신은 얻을 수 있습니다여기서 wlan_kabel. 이는 다음과 유사합니다.맥블란스해결책.

ipvlan으로 브리징

IP Vlan에는 네트워크를 연결하는 데 사용할 수 있는 브리지에 대한 제한이 없습니다. 사용 방법에 대한 세부 정보여기에서 찾을 수 있습니다

가장 무도회 대안

브릿지를 달성하기 위해 대신 Linux 라우팅을 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 제품군에는 가상 인터페이스(한때 openvpn을 사용해야 했던 것) 설정 및 브리지 생성을 포함하여 이 모든 것에 대한 명령이 포함되어 있습니다. IP로 브리지를 설정하는 방법을 모른다면 여기로 가세요.

  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과 tap0을 브리지에 종속시키고 IP 주소 10.173.10.1을 할당한 다음 모두 가져옵니다. 인터페이스를 가져오는 세 가지 개별 인스턴스(tap0, eth0 및 br0의 경우)가 필요합니다.

이 작업을 수행하는 비결은 PC(VM/Linux 컨테이너/네트워크 네임스페이스가 아님)가 대신 ARP 쿼리에 응답할 수 있도록 하는 Proxy.arp를 사용하는 것입니다.

즉, 하드웨어 인터페이스와 가상 인터페이스 간에 IPv4 전달을 사용하면 VM/LXC/NNS를 물리적 인터페이스인 것처럼 LAN에 연결할 수 있다고 생각하지만 이는 사실이 아닙니다. LAN이 실제로 작동할 수 있게 해주는 기본 ARP 트래픽입니다. 따라서 문제는 IPv4 트래픽을 올바르게 전달하는 경우 VM/LXC/NNS가 작동하도록 ARP 트래픽도 전달할 수 있는 방법은 무엇입니까? 비결은 Proxy-arp를 사용하는 것입니다.

이에 대한 완전한 대답은 다음과 같습니다.Bohdi Zazen의 블로그, 공개 제목: 브리지 무선 카드. 그는 더 이상 사용되지 않는 패키지인 uml-utilities를 사용하여 tunctl 명령을 통해 가상 인터페이스를 생성합니다. 이는 그가 uml-utilities를 사용하는 유일한 명령이므로 패키지 다운로드를 무시하고 안전하게 I 명령을 사용할 수 있습니다. 위에서 작성한 탭 또는 튜닝 인터페이스 중 원하는 대로 명령을 적절하게 수정하면 됩니다. 그런 다음 LXC에 대한 veth 쌍을 만들고 이제 tap0과 veth0 사이에 브리지를 만듭니다. br0이라고 불리는 이 브리지는 Bohdi Zazen이 설명한 단순한 tap0 인터페이스 대신에 프록시-arp를 수행해야 하는 것입니다.


출처:askubuntu.com,nullroute.eu.org,Firejail.wordpress.com,superuser.com

답변4

다른 답변에 설명된 4addr은 어댑터/드라이버에서 지원하는 경우 확실히 가장 좋은 방법이지만 모든 방법이 지원되는 것은 아닙니다. NAT는 어떤 경우에는 작동할 수 있지만 LAN에서 양방향으로 적절한 통신을 하는 것은 문제가 됩니다(예: NAT 반대쪽에 있는 프린터 연결 또는 다른 IoT 장치에 액세스). 브로드캐스트/멀티캐스트(예: 자동 검색, 봉쥬르)에 의존하는 모든 작업은 NAT를 통해 실패합니다.

대안은 다음에 설명된 대로 ARP 프록시(parprouted)를 사용하는 것입니다.https://wiki.debian.org/BridgeNetworkConnectionsProxyArp. 프린터용 Raspberry Pi에 이것을 설정했는데 정말 매력적으로 작동합니다. ( post-up먼저 IP 주소를 얻을 수 있도록 명령에 10초의 절전 모드를 추가했습니다. 이전 컴퓨터의 속도 저하와 관련이 있을 수 있습니다. RPi...)

관련 정보