![Raspbian 브리지 설정 문제](https://linux55.com/image/148946/Raspbian%20%EB%B8%8C%EB%A6%AC%EC%A7%80%20%EC%84%A4%EC%A0%95%20%EB%AC%B8%EC%A0%9C.png)
무선 액세스 포인트와 라우터 사이의 브리지로 라즈베리 파이를 설정하려고 합니다(이유는 장치를 AP에 연결하고 tc
이를 파이에서 사용하여 열악한 네트워크를 시뮬레이션하고 싶기 때문입니다). 라우터는 pi at에 연결되고 eth0
AP는 pi at eth1
(USB-이더넷 어댑터)에 연결됩니다.
나는 이것을 사용 dhcpcd
하고 dnsmasq
이것을 달성하려고 노력하고 있습니다. 그러나 장치를 AP에 연결하고 IP 주소(에 지정된 범위 내 dhcpcd.conf
)를 제공할 수 있더라도 도메인이나 IP 주소에 관계없이 모든 핑이 시간 초과됩니다(파이를 연결하여 핑할 수도 없는 경우). AP).
IPv4 전달을 활성화했습니다 /etc/sysctl.conf
.
net.ipv4.ip_forward=1
dhcpcd.conf
기본값을 추가했습니다.
# eth1 is connected to the AP
interface eth1
# This is the ip address of the Raspberry Pi
static ip_address=10.0.0.100/24
# This is the ip address of the router
static routers=10.0.0.1
내 dnsmasq.conf
것은 다음과 같습니다(인터페이스가 올바른지 완전히 확신할 수 없습니다. AP에 연결된 인터페이스로 설정했지만 로 변경해도 eth0
아무런 차이가 없는 것 같습니다).
interface=eth1
listen-address=10.0.0.100
bind-interfaces
server=8.8.8.8
server=8.8.4.4
domain-needed
bogus-priv
dhcp-range=10.0.0.110,10.0.0.130,4h
다음 명령을 실행하여 iptable 규칙을 추가합니다(그런 다음 iptables를 파일에 저장하고 부팅 시 복원합니다 rc.local
).
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
내가 읽은 바에 따르면 위의 규칙은 pi를 통해 트래픽을 올바르게 전달해야 하지만 그렇지 않은 것 같습니다.
dhcpcd
및 서비스 상태를 확인했는데 dnsmasq
오류처럼 보이는 내용은 발견되지 않았습니다.
dhcpcd
상태:
● dhcpcd.service - dhcpcd on all interfaces
Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/dhcpcd.service.d
└─wait.conf
Active: active (running) since Tue 2019-02-26 12:02:43 GMT; 29min ago
Main PID: 368 (dhcpcd)
CGroup: /system.slice/dhcpcd.service
└─368 /sbin/dhcpcd -q -w
Feb 26 12:02:43 raspberrypi dhcpcd[368]: eth0: offered 10.0.0.140 from 10.0.0.1
Feb 26 12:02:43 raspberrypi dhcpcd[368]: eth0: probing address 10.0.0.140/24
Feb 26 12:02:47 raspberrypi dhcpcd[368]: eth0: using IPv4LL address 169.254.202.179
Feb 26 12:02:47 raspberrypi dhcpcd[368]: eth0: adding route to 169.254.0.0/16
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: leased 10.0.0.140 for 86400 seconds
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: adding route to 10.0.0.0/24
Feb 26 12:02:48 raspberrypi dhcpcd[368]: eth0: adding default route via 10.0.0.1
Feb 26 12:02:49 raspberrypi dhcpcd[368]: eth0: deleting route to 169.254.0.0/16
Feb 26 12:02:50 raspberrypi dhcpcd[368]: eth0: no IPv6 Routers available
Feb 26 12:02:50 raspberrypi dhcpcd[368]: eth1: no IPv6 Routers available
dnsmasq
상태:
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-02-26 12:02:43 GMT; 33min ago
Main PID: 401 (dnsmasq)
CGroup: /system.slice/dnsmasq.service
└─401 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5 --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d0
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:50 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPDISCOVER(eth1) a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPOFFER(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPREQUEST(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b
Feb 26 12:02:58 raspberrypi dnsmasq-dhcp[401]: DHCPACK(eth1) 10.0.0.129 a0:f3:c1:6d:2f:1b TL-WR702N
Feb 26 12:35:05 raspberrypi dnsmasq-dhcp[401]: DHCPREQUEST(eth1) 10.0.0.124 f4:5c:89:8e:aa:a1
Feb 26 12:35:05 raspberrypi dnsmasq-dhcp[401]: DHCPACK(eth1) 10.0.0.124 f4:5c:89:8e:aa:a1 george
이 상태에서는 TL-WR702N
AP george
와 AP에 연결된 기기입니다.
내가 어디서 잘못되었는지 혼란스러워요. 나는 팔로우하고 있다지도 시간pi를 브리지로 설정하고 참조된 매뉴얼 페이지를 통해 문제 디버깅을 시도했지만 dnsmasq
소용 이 없었습니다 dhcpcd
.iptables
PI가지다설정 이후 다시 시작되었습니다.
답변1
링크된 튜토리얼을 확인한 후(https://pimylifeup.com/raspberry-pi-wifi-bridge/), 다음과 같은 결론을 내릴 수 있습니다.아니요브리징 튜토리얼이 아니라 NAT/라우터 튜토리얼입니다. 심지어 댓글 중 하나는 다음과 같이 말합니다.
또한 이 설정은 기술적으로 브리지가 아니라 Wi-Fi 클라이언트 NAT 라우터라는 점에 유의하는 것이 중요합니다.
따라서 실제로 브리지를 사용하려면 브리지 튜토리얼을 따르십시오. 라즈비안이기 때문에 데비안브리지된 네트워크 연결충분히 좋을 것입니다. 언급된 bridge-utils 패키지는 실제로 필요하지 않습니다(오래됨).brctl
최신 명령으로 완전히 대체 가능IP 경로 2~의ip link
그리고 (정말 필요한 경우)bridge
, 하지만 그것 때문에bridge-utils-interfaces
플러그인위 아래라면~의구성.
따라서 궁극적으로 다음과 같은 방법을 사용하여 구성을 수행할 수 있습니다.
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
이제 실제 인터페이스가 브리지 포트가 되고 레이어 3 설정이 무시되므로 실제 인터페이스에 IP를 입력하지 마십시오. 또한 중요하지 않지만 브리지는 첫 번째 인터페이스의 MAC 주소를 상속해야 합니다. 따라서 이것이 정말 중요하고 eth1의 MAC을 사용하고 싶다면 이를 명령 앞에 놓으십시오 bridge_ports
(이렇게 하면 라우터의 DHCP 제안이 변경될 수도 있습니다).
이제 eth0
다양한 설정에서 참조를 변경하여 인터페이스를 으로 선언합니다 br0
. 예를 들어 더 이상 필요하지 않기 때문에 필요하지 않을 수도 있습니다 dnsmasq
.
추가 정보:
iptables
두 인터페이스 간을 필터링하기 위한 대체 또는 보완 시도를 사용한 적이 있는 경우ebtables
(힌트: 그렇게 해서는 안 됩니다. 지금은 라우터가 아니라 브리지이지만 상태 저장 투명 방화벽 브리지에 필요한 것임) 다음을 참고하세요. 활성화된 경우br-넷필터브리지 필터링과 IP 필터링 계층 간의 특수 상호 작용:Linux 기반 브리지의 ebtables/iptables 상호 작용. 이를 이해하지 못하면 디버깅하기 어려운 결과가 발생할 수 있습니다.많은
tc qdisc
효과(예:netem
)은 나가는 방향(출구)에만 적용됩니다. 두 인터페이스eth0
사이에 있기 때문에eth1
특정 의도된 작업에 대한 종료 인터페이스를 항상 찾을 수 있다고 생각할 수도 있지만 그렇게 되면eth0
RPi 자체가 인터넷 측에서 영향을 받을 수 있으며 이는 우리가 원하는 것이 아닐 수 있습니다. 의. 다음을 추가하면 이를 방지할 수 있습니다.중간 기능 블록 장치(ifb0
) toeth1
: 항목과 나머지 네트워킹 코드 사이에 인터페이스를 인위적으로 삽입합니다. 따라서 수신 데이터 흐름의 관점에서 인터페이스는 이제 송신 인터페이스eth1
이며netem
다른 해석의 경우 수신 흐름의 일부입니다. 이제 중단 없이 TC를 적용eth1
하고 나갈 수 있습니다 . 내 답변에 더 많은 정보가 있습니다.ifb0
eth0
netem을 사용하여 브리지 인터페이스에서 패킷 손실 시뮬레이션