![네임스페이스에서 macvlan에 대해 DNS를 올바르게 설정하려면 어떻게 해야 합니까(IP 핑은 작동하지만 URL 핑은 작동하지 않음)?](https://linux55.com/image/188014/%EB%84%A4%EC%9E%84%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%97%90%EC%84%9C%20macvlan%EC%97%90%20%EB%8C%80%ED%95%B4%20DNS%EB%A5%BC%20%EC%98%AC%EB%B0%94%EB%A5%B4%EA%B2%8C%20%EC%84%A4%EC%A0%95%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C(IP%20%ED%95%91%EC%9D%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%EB%A7%8C%20URL%20%ED%95%91%EC%9D%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C)%3F.png)
서버의 네임스페이스에 macvlan을 설정했습니다. 기본 네임스페이스와 macvlan 네임스페이스는 물론 LAN에 있는 다른 클라이언트의 macvlan 네임스페이스까지 ping할 수 있습니다.
하지만 DNS는 작동하지 않습니다. 그 밖에 무엇을 구성해야 합니까?
pi@testpi:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
valid_lft 84768sec preferred_lft 73968sec
inet6 fe80::247e:fd3c:36d7:68f5/64 scope link
valid_lft forever preferred_lft forever
4: hostmacvlanben0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:27:eb:98:70:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 scope global noprefixroute hostmacvlanben0
valid_lft forever preferred_lft forever
inet 192.168.100.174/24 brd 192.168.100.255 scope global secondary dynamic noprefixroute hostmacvlanben0
valid_lft 84792sec preferred_lft 73992sec
inet6 fe80::8d5f:20a4:abba:2d1c/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fe98:704c/64 scope link
valid_lft forever preferred_lft forever
pi@testpi:~ $ ip r
default via 192.168.100.1 dev eth0 proto dhcp src 192.168.100.222 metric 202
default via 192.168.100.1 dev hostmacvlanben0 proto dhcp src 192.168.100.174 metric 204
192.168.100.0/24 dev eth0 proto dhcp scope link src 192.168.100.222 metric 202
192.168.100.0/24 dev hostmacvlanben0 proto dhcp scope link src 192.168.100.174 metric 204
192.168.100.224 dev hostmacvlanben0 scope link
네임스페이스 출력 nsben1
:
pi@testpi:~ $ sudo ip netns exec nsben1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: macvlanclient1@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:27:eb:98:70:4d brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.100.224/24 scope global macvlanclient1
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fe98:704d/64 scope link
valid_lft forever preferred_lft forever
pi@testpi:~ $ sudo ip netns exec nsben1 ip r
default via 192.168.100.1 dev macvlanclient1
192.168.100.0/24 dev macvlanclient1 proto kernel scope link src 192.168.100.224
핑은 IP
유효하지만 핑은 URL
유효하지 않습니다.
pi@testpi:~ $ sudo ip netns exec nsben1 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=23.0 ms
^[[A64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=24.3 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 23.003/23.667/24.332/0.682 ms
pi@testpi:~ $ sudo ip netns exec nsben1 ping google.com
ping: google.com: Temporary failure in name resolution
traceroute
힌트가 제공되지 않습니다.
pi@testpi:~ $ sudo ip netns exec nsben1 traceroute google.com
google.com: Temporary failure in name resolution
Cannot handle "host" cmdline arg `google.com' on position 1 (argc 1)
내 /etc/resolv.conf
것은:
pi@testpi:~ $ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.100.1
192.168.100.1
내 개인 LAN의 에지 라우터입니다. 그런 다음 ISP로부터 케이블 모뎀도 얻었습니다.
확인해보세요tcpdump
macvlan
네임스페이스의 IP를 nsben1
확인한 다음 네임스페이스 내부에서 ping을 실행하여 8.8.8.8
답변을 얻습니다.
pi@testpi:~ $ sudo tcpdump --interface eth0 host 192.168.100.224
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:43:45.417310 IP 192.168.100.224 > dns.google: ICMP echo request, id 20611, seq 1, length 64
15:43:45.440190 IP dns.google > 192.168.100.224: ICMP echo reply, id 20611, seq 1, length 64
15:43:46.418707 IP 192.168.100.224 > dns.google: ICMP echo request, id 20611, seq 2, length 64
15:43:46.440392 IP dns.google > 192.168.100.224: ICMP echo reply, id 20611, seq 2, length 64
그리고 ping에는 www.google.com
응답이 없습니다. 8.8.1.1
내가 이해하지 못하는 핑은 다음과 같습니다 ( 8.8.1.1
직접 핑을 해도 아무런 답변도 얻지 못했습니다).
15:44:13.988596 IP 192.168.100.224.45822 > 8.8.1.1.domain: 22489+ A? google.com. (28)
15:44:13.989314 IP 192.168.100.224.45822 > 8.8.1.1.domain: 25561+ AAAA? google.com. (28)
15:44:18.994541 IP 192.168.100.224.45822 > 8.8.1.1.domain: 22489+ A? google.com. (28)
15:44:18.994660 IP 192.168.100.224.45822 > 8.8.1.1.domain: 25561+ AAAA? google.com. (28)
편집본을 사용했어요/etc/dhcpcd.conf
네임서버를 에서 로 변경 192.168.100.1
하고 8.8.8.8
서비스를 다시 시작하세요. 이제 resolv.conf
표시되지만 nameserver 8.8.8.8
동작은 여전히 동일합니다.
답변1
특별한 설정이 필요하지 않습니다.
/etc/resolv.conf
일반적으로 네임스페이스에 제공되는 네임서버는 default
추가 네임스페이스( )에서도 사용되어야 합니다 nsben1
.
내 경우에는 이것이 작동하지 않습니다.
처음에는 LAN 라우터를 이름 서버로 사용했지만 8.8.8.8
라우터 측 DNS에 문제가 있는지 테스트하기 위해 변경했습니다.
이것이 내 행동에 변화를 준 것은 아니기 때문에 좀 더 조사를 해보고 sudo ip netns exec nsben1 cat /etc/resolv.conf
결과를 알아냈습니다 nameserver 8.8.1.1
.
이것은 잘못된 것입니다. 심지어 ping 8.8.1.1
응답 도 주어지지 않았습니다.
nsben1
나는 이것이 단지 같다고 생각했기 때문에 이전에는 네임스페이스에서 이것을 확인하지 않았습니다 . /etc/resolv.conf
RaspberryPi OS의 경우 /etc/dhcpcd.conf
라인을 사용하여 편집하여 변경할 수 있습니다 static domain_name_servers=
.
재부팅 후 이제 네임스페이스가 표시 8.8.8.8
되고 DNS가 제대로 작동합니다.