デュアルスタック(IPv4およびIPv6)ホームネットワークを実行し、いくつかのVLANを使用して、IoTデバイス(VLAN 20)を通常のユーザー(VLAN 10)からネットワークハードウェア(タグなしVLAN)から分離します。私は現在、Raspberry Pi 3 B +(raspbianを実行)でローカルDNS(および他のいくつかのサービス)をホストしています。これは通常、タグなしVLANにありますが、他の2つのVLAN(10)のアドレスを指定してみます。 20)実験として(ファイアウォールルールの簡素化、ルーターの負荷の軽減など)。これに対する私の最初の試みは失敗したので、私は物事を単純化してタグなしのVLAN plus VLAN 10に配置しようとしましたが、それも失敗しました。理由がわかりません。
通常の設定は次のとおりです(タグなしVLANのアドレスのみ、VLAN 10または20)には何もありません):
/etc/network/interfaces
は空です。
これが/etc/dhcpcd.conf
:
hostname
clientid
persistent
option rapid_commit
option domain_name_servers, domain_name, domain_search, Host_name
option classless_static_routes
option ntp_servers
option interface_mtu
require dhcp_server_identifier
slaac private
interface eth0
static ip_address=192.168.1.10/24
static ip6_address=fd:<STATIC_IPv6_ULA>/64
static routers=192.168.1.1 fd:<STATIC_IPv6_ULA_FOR_ROUTER>
static domain_name_servers=127.0.0.1 ::1
そして、これが私が得る結果のアドレスです:
$ 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 <MAC_ADDR> brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fd:<IPv6_ULA_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 85965sec preferred_lft 13965sec
inet6 <IPv6_GLOBAL_ADDR_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 85965sec preferred_lft 13965sec
inet6 fd:<STATIC_IPv6_ULA>/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::<IPv6_LLA>/64 scope link
valid_lft forever preferred_lft forever
これは正常に機能します。ルーターを介してVLAN10および20のホストにルーティングできます。 VLANの1つにインターフェースを追加しようとすると問題が発生します...
VLAN 10にアドレスを追加するために、単一アドレス設定の構成の上に次の構成を追加しました。
これが/etc/network/interfaces
:
auto eth0.10
iface eth0.10 inet manual
vlan-raw-device eth0
iface eth0.10 inet6 manual
vlan-raw-device eth0
これが/etc/dhcpcd.conf
:
interface eth0.10
static ip_address=10.0.10.10/24
static ip6_address=fd:<STATIC_IPv6_VLAN_10_ULA>/64
static routers=10.0.10.1 <STATIC_IPv6_VLAN_10_ULA_FOR_ROUTER>
static domain_name_servers=127.0.0.1 ::1
そして、これが私が得る結果のアドレスです:
$ 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 <MAC_ADDR> brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fd:<STATIC_IPv6_ULA>/64 scope global noprefixroute
valid_lft forever preferred_lft forever
3: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether <MAC_ADDR> brd ff:ff:ff:ff:ff:ff
inet 10.0.10.10/24 brd 10.0.10.255 scope global eth0.10
valid_lft forever preferred_lft forever
inet6 fd:<IPv6_VLAN_10_ULA_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86377sec preferred_lft 14377sec
inet6 <IPv6_GLOBAL_ADDR_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86377sec preferred_lft 14377sec
inet6 fd:<STATIC_IPv6_VLAN_10_ULA>/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::<IPv6_LLA>/64 scope link
valid_lft forever preferred_lft forever
これは非常に奇妙なことでした。タグなしVLAN上のグローバルIPv6アドレスと、リンクローカルアドレス(LLA)およびSLAACから取得したULAを失いました。何が機能するかを確認するためにいくつかのpingを試しましたが、次のことがわかりました。
$ ping -4 -I eth0 www.google.com
<SUCCESS>
$ ping -4 -I eth0.10 www.google.com
<SUCCESS>
$ ping -6 -I eth0 www.google.com
connect: Network is unreachable
$ ping -6 -I eth0.10 www.google.com
<SUCCESS>
そのため、IPv4は両方のVLANで正常に機能していましたが、タグなしVLANではIPv6が壊れていました。 syslog
に関連するすべてのメッセージについてdhcpcd
を調べたところ、次のことがわかりました。
00:28:23 HOSTNAME systemd[1]: Starting dhcpcd on all interfaces...
00:28:23 HOSTNAME dhcpcd[340]: dev: loaded udev
00:28:23 HOSTNAME dhcpcd[340]: eth0: waiting for carrier
00:28:23 HOSTNAME dhcpcd[340]: eth0.10: waiting for carrier
00:28:24 HOSTNAME dhcpcd[340]: eth0: carrier acquired
00:28:24 HOSTNAME dhcpcd[340]: DUID <DUID>
00:28:24 HOSTNAME dhcpcd[340]: eth0: IAID <IAID>
00:28:24 HOSTNAME dhcpcd[340]: eth0: IAID conflicts with one assigned to eth0.10
00:28:24 HOSTNAME dhcpcd[340]: eth0: adding address fe80::<IPv6_LLA>
00:28:24 HOSTNAME dhcpcd[340]: eth0: adding address fd:<STATIC_IPv6_ULA>/64
00:28:24 HOSTNAME dhcpcd[340]: eth0: adding route to fd:<STATIC_IPv6_ULA_PREFIX>/64
00:28:24 HOSTNAME dhcpcd[340]: eth0: probing address 192.168.1.10/24
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: carrier acquired
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: IAID <IAID>
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: IAID conflicts with one assigned to eth0
00:28:24 HOSTNAME dhcpcd[340]: eth0: deleting address fe80::<IPv6_LLA>
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: adding address fe80::<IPv6_LLA>
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: adding address fd:<STATIC_IPv6_VLAN_10_ULA>/64
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: adding route to fd:<STATIC_IPv6_ULA_VLAN_10_PREFIX>/64
00:28:24 HOSTNAME dhcpcd[340]: eth0.10: probing address 10.0.10.10/24
00:28:24 HOSTNAME dhcpcd[340]: eth0: soliciting an IPv6 router
00:28:25 HOSTNAME dhcpcd[340]: eth0.10: soliciting an IPv6 router
00:28:29 HOSTNAME dhcpcd[340]: eth0.10: using static address 10.0.10.10/24
00:28:29 HOSTNAME dhcpcd[340]: eth0.10: adding route to 10.0.10.0/24
00:28:29 HOSTNAME dhcpcd[340]: eth0.10: adding default route via 10.0.10.1
00:28:29 HOSTNAME dhcpcd[340]: forked to background, child pid 603
00:28:29 HOSTNAME systemd[1]: Started dhcpcd on all interfaces.
00:28:30 HOSTNAME dhcpcd[603]: eth0: using static address 192.168.1.10/24
00:28:30 HOSTNAME dhcpcd[603]: eth0: adding route to 192.168.1.0/24
00:28:30 HOSTNAME dhcpcd[603]: eth0: adding default route via 192.168.1.1
00:28:30 HOSTNAME dhcpcd[603]: eth0.10: Router Advertisement from fe80::<IPv6_LLA_OF_ROUTER>
00:28:30 HOSTNAME dhcpcd[603]: eth0.10: adding address <IPv6_GLOBAL_ADDR_FROM_SLAAC>/64
00:28:30 HOSTNAME dhcpcd[603]: eth0.10: adding address <IPv6_VLAN_10_ULA_FROM_SLAAC>/64
00:28:30 HOSTNAME dhcpcd[603]: eth0.10: adding route to <IPv6_GLOBAL_PREFIX_FROM_SLAAC>/64
00:28:30 HOSTNAME dhcpcd[603]: eth0.10: adding default route via fe80::<IPv6_LLA_OF_ROUTER>
00:29:17 HOSTNAME dhcpcd[603]: eth0.10: fe80::<IPv6_LLA_OF_ROUTER> is unreachable, expiring it
00:30:08 HOSTNAME dhcpcd[603]: eth0.10: fe80::<IPv6_LLA_OF_ROUTER> is reachable again
そのため、タグなしVLANでLLAが削除され、そのインターフェイスでルーターアドバタイズメントが表示されなくなるという問題があるようです。
このセットアップは可能であるはずだと思います(NIC IPv6で動作)ごとに複数のVLAN)。この問題の原因について何か考えはありますか?これは私による構成の失敗ですか?
便利な場合は、RaspberryPiで実行されているraspbianのカーネルバージョンを次に示します。
$ uname -a
Linux HOSTNAME 4.14.70-v7+ #1144 SMP Tue Sep 18 17:34:46 BST 2018 armv7l GNU/Linux
ヒント@grawityをありがとう!問題は、単にdhcpcd
が古くなっていることでした。上記のコメントで@grawityが述べたように、dhcpcd
は、バージョン7.0.0のVLANタグ付きインターフェイスでの自動IAIDのサポートのみを追加しました。これは、私のラズビアンシステムでのapt
からのデフォルトのインストール:
$ Sudo dhcpcd --version
dhcpcd 6.11.5
Copyright (c) 2006-2016 Roy Marples
Compiled in features: INET IPv4LL INET6 DHCPv6 AUTH
それが誰かを助ける場合に備えて、ソースから最新バージョン(7.0.8)をインストールするために私が取った手順は次のとおりです。
dhcpcd
の最新バージョンについては https://github.com/rsmarples/dhcpcd/releases を確認してください。
wget https://github.com/rsmarples/dhcpcd/archive/dhcpcd-7.0.8.tar.gz
tar xzf dhcpcd-7.0.8.tar.gz
cd dhcpcd-dhcpcd-7.0.8
./configure --libexecdir=/lib/dhcpcd --dbdir=/var/lib/dhcpcd5
make
Sudo make install
これらの手順 は一般的に/var/lib/dhcpcd5
の使用を推奨していますが、dbdir
を/var/lib/dhcpcd
に設定していることに注意してください。私のシステムでは、/var/lib/dhcpcd5
はdhcpcd
の既存のインストールですでに使用されており、/var/lib/dhcpcd
は存在しませんでした。自分にとって意味のあることは何でもしてください。
これで完了です。
$ Sudo dhcpcd --version
dhcpcd 7.0.8
Copyright (c) 2006-2018 Roy Marples
Compiled in features: INET ARP ARPing IPv4LL INET6 DHCPv6 AUTH
そして今、すべてが追加されたVLAN 10インターフェースで完全に機能します(そして、VLAN 20インターフェースを追加したときにも機能します))これは次のようになりますVLAN 10インターフェイスが追加されました:
$ 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 <MAC_ADDR> brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fd:<IPv6_ULA_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86382sec preferred_lft 14382sec
inet6 <IPv6_GLOBAL_ADDR_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86382sec preferred_lft 14382sec
inet6 fd:<STATIC_IPv6_ULA>/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::<IPv6_LLA>/64 scope link
valid_lft forever preferred_lft forever
3: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether <MAC_ADDR> brd ff:ff:ff:ff:ff:ff
inet 10.0.10.10/24 brd 10.0.10.255 scope global noprefixroute eth0.10
valid_lft forever preferred_lft forever
inet6 fd:<IPv6_VLAN_10_ULA_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86381sec preferred_lft 14381sec
inet6 <IPv6_VLAN_10_GLOBAL_ADDR_FROM_SLAAC>/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 86381sec preferred_lft 14381sec
inet6 fd:<STATIC_IPv6_VLAN_10_ULA>/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::<IPv6_LLA_2>/64 scope link
valid_lft forever preferred_lft forever
興味深いことに、各インターフェイスのLLAは一意です。 IAIDから派生しているようです。これは、syslog
からわかります。現在は各インターフェイスで一意です。 eth0の場合、IAIDはMACアドレスから取得されますが、VLAN 10インターフェイスの場合、IAIDは単にff:00:00:0a
です。VLAN 20インターフェイスの場合はff:00:00:14
です。したがって、IAIDはff::VLAN_NUMBER
であるように見えます。これにより、各インターフェイスで一意のLLAが生成されます。いずれにしても、それは実際の問題というよりも好奇心が強いです。
とにかく、すべてのインターフェースは適切に構成され、すべて内部ネットワークホストと外部インターネットホストに到達できます。もう一度ありがとう@grawity!