네임스페이스에서 macvlan에 대해 DNS를 올바르게 설정하려면 어떻게 해야 합니까(IP 핑은 작동하지만 URL 핑은 작동하지 않음)?

네임스페이스에서 macvlan에 대해 DNS를 올바르게 설정하려면 어떻게 해야 합니까(IP 핑은 작동하지만 URL 핑은 작동하지 않음)?

서버의 네임스페이스에 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로부터 케이블 모뎀도 얻었습니다.


확인해보세요tcpdumpmacvlan네임스페이스의 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.confRaspberryPi OS의 경우 /etc/dhcpcd.conf라인을 사용하여 편집하여 변경할 수 있습니다 static domain_name_servers=.

재부팅 후 이제 네임스페이스가 표시 8.8.8.8되고 DNS가 제대로 작동합니다.

관련 정보