저는 Raspberry Pi 3 Model B(arch Linux 실행)와 해당 WLAN 모듈을 실험하고 있습니다.
오늘날까지 내 전체 네트워크는 Pi Hole을 실행합니다. Pi가 있는 곳에서는 휴대폰 Wi-Fi 수신이 매우 좋지 않기 때문에 Pi에 Wi-Fi AP를 추가하기로 결정했습니다.
이제 이상한 점은 WLAN AP가 제대로 작동한다는 것입니다(@ 언급한 대로 브리지 모드로 설정).https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md) 하지만 더 이상 Pi에 DNS 요청을 할 수 없습니다.
dig pi.home @192.168.1.150
; <<>> DiG 9.13.5 <<>> pi.home @192.168.1.150
;; global options: +cmd
;; connection timed out; no servers could be reached
더욱 혼란스러운 점은 Chrome에서 Pi Hole 웹 인터페이스를 한 번 로드하면 DNS가 다시 작동한다는 것입니다.
현재 다음과 같은 구성이 있습니다.
Pi-Hole의 DNS 서버는 모든 인터페이스를 수신합니다.
브리지 구성
cat /etc/netctl/bridge
Description="WAP Bridge"
Interface=br0
Connection=bridge
BindsToInterfaces=(eth0 wlan0)
IP=no
ExecUpPost="ip link set dev br0 address $(cat /sys/class/net/eth0/address); IP=dhcp; ip_set"
ExecDownPre="IP=dhcp"
SkipForwardingDelay=yes
iptables
cat /etc/iptables/iptables.rules
*nat
:PREROUTING ACCEPT [4:196]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [88:10291]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [31:4764]
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
COMMIT
구성된 경우
ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.150 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 xyxyxy prefixlen 64 scopeid 0x20<link>
ether xyxyxy txqueuelen 1000 (Ethernet)
RX packets 2537 bytes 468919 (457.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 267 bytes 60665 (59.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 xyxyxy prefixlen 64 scopeid 0x20<link>
ether xyxyxy txqueuelen 1000 (Ethernet)
RX packets 2560 bytes 473036 (461.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 297 bytes 70500 (68.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 109 bytes 8338 (8.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 109 bytes 8338 (8.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 xyxyxy prefixlen 64 scopeid 0x20<link>
ether xyxyxy txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2276 bytes 529781 (517.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
IPv4 전달
cat /etc/sysctl.d/ipv4forwarding.conf
net.ipv4.ip_forward = 1
/etc/dhcpd.conf에는 다음이 포함됩니다.
[...]
denyinterfaces eth0
denyinterfaces wlan0
/etc/hotapd/hostapd.conf(필요한 경우)
cat /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
ssid=<SSID>
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=<PASSWORD>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
누구든지 어떤 아이디어가 있습니까? Pi Hole DNS 설정의 "모든 소스 허용"과 관련이 있습니까?
답변1
해결 방법은 IPv4 전달 및 모든 규칙을 추가 Gateway
하고 제거하는 것입니다 .br0
iptables