サーバーの名前空間に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
pingはIP
有効ですが、pingは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
私が理解していないPingは次のとおりです(8.8.1.1
直接Pingをしても答えは得られませんでした)。
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が正常に動作します。