今度は一つのインタフェースにIPアドレスを降るのではなく、VLANタグを追加して、そこにIPアドレスを振ってみます。
まずはインタフェースの状態を確認。今回はPC側でUSBで増設したインタフェースに対して試してみます。インタフェース名の下6桁やMACアドレスなどは掲載時にXXに置換しています。
$ ip -s -d addr show dev enx384b76XXXXXX 3: enx384b76XXXXXX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 38:4b:76:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.168.0.253/24 brd 192.168.0.255 scope global noprefixroute enx384b76XXXXXX valid_lft forever preferred_lft forever inet6 fe80::XXXX:XX:XXXX:XXXX/64 scope link noprefixroute valid_lft forever preferred_lft forever RX: bytes packets errors dropped overrun mcast 4170690 14491 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3975503 37565 0 0 0 0
VLANを作成してみます
$ sudo ip link add link enx384b76XXXXXX name vlan100 type vlan id 100
結果を確認します(関係ないインタフェースの情報は削除しています)
$ ip -s -d addr show 3: enx384b76XXXXXX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 38:4b:76:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.168.0.253/24 brd 192.168.0.255 scope global noprefixroute enx384b76XXXXXX valid_lft forever preferred_lft forever inet6 fe80::XXXX:XX:XXXX:XXXX/64 scope link noprefixroute valid_lft forever preferred_lft forever RX: bytes packets errors dropped overrun mcast 4170690 14491 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3978513 37579 0 0 0 0 7: vlan100@enx384b76XXXXXX: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 38:4b:76:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 100 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0
IPアドレスを割り振ってみます。
$ sudo ip addr add 192.168.1.253/24 brd 192.168.1.255 dev vlan100
結果を確認します。
$ ip -s -d addr show dev vlan100 7: vlan100@enx384b76XXXXXX: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 38:4b:76:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 100 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.168.1.253/24 brd 192.168.1.255 scope global vlan100 valid_lft forever preferred_lft forever RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0
この状態だとインタフェースがDOWNのままなので、起動します。
$ sudo ip link set dev vlan100 up
結果を確認します。
$ ip -s -d addr show dev vlan100 7: vlan100@enx384b76XXXXXX: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 38:4b:76:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0 vlan protocol 802.1Q id 100 <REORDER_HDR> numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 inet 192.168.1.253/24 brd 192.168.1.255 scope global vlan100 valid_lft forever preferred_lft forever inet6 fe80::XXXX:XXXX:XXXX:XXX/64 scope link valid_lft forever preferred_lft forever RX: bytes packets errors dropped overrun mcast 0 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3181 23 0 0 0 0
この状態では、192.168.0.0/24 にアクセスするとタグ無しで、192.168.1.0/24 にアクセスすると VLANID=100 の802.1Qタグありで通信することになります。
次に、その先のスイッチの設定です。ここではTP-LINKのTL-SG105Eを使っています。
PC側でVLANなしのアドレスの方で192.168.0.253/24を振っているので、こちらを使ってこのスイッチのデフォルトIPアドレスの場合の管理画面へ http://192.168.0.1 にアクセスして admin/admin(初期パスワードの場合)でログインします。
802.1Q VLANの設定で、VLAN ID 100を設定して、このPCが繋がっているポート5をTagged Ports に、その先で Raspberry Pi が繋がっているポート1をUnttaged Ports に設定します。
設定後は上記のような感じです。画面の上半分は設定を行う画面で、VLAN IDのところに設定対象のVLAN IDを入れてから、各ポートの設定内容にチェックをして「Add/Modify」を押して使います。
下半分が設定状況で、VLAN IDが100の行を見ると、Member Ports が 1,5 で、Tagged Ports が 5、Unttaged Ports が 1になっています。ですので、ポート5には802.1Qタグが付いた状態で、ポート1には802.1Qタグがない状態で通信することがわかります。
これだけではダメで、ポート1のPVIDを100に設定して、Raspberry Piとの通信時に使うポート1の通信時に802.1Qタグの付け外しをさせます。
これで、Raspberry Piにpingを打つと帰ってくるようになります。
$ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.07 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.435 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.517 ms ^C --- 192.168.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2031ms rtt min/avg/max/mdev = 0.435/0.676/1.077/0.286 ms
もちろん、SSHでもログインできます。同様のことは Raspberry Pi でもできると思いますが、ip コマンドを使った設定は再起動で失われてしまいます。
永続的に使うには・・・NetworkManegerでやるのが簡単でした・・・。というか、はじめからLinuxMintには入ってた・・・。
以下は設定後のスクリーンショットです。説明いらないくらい簡単のような。
シェル上でも
$ export LANG=jp_JP.UTF-8 $ nmtui
で
こんな感じで設定できるし、楽ちんです。
で、tuiでできるということは、Raspberry Pi でもsshでログインして、
$ sudo apt-get install network-manager $ sudo systemctl enable NetworkManager.service $ sudo systemctl start NetworkManager.service $ export LANG=ja_JP.UTF-8 $ nmtui
で、
という感じで設定ができてしまいます。
追加できるモジュール?もこんなにたくさん。
$ sudo apt list Network* Listing... Done network-config/stable 0.2-2 all network-manager-config-connectivity-debian/stable 1.14.6-2+deb10u1 all network-manager-dev/stable 1.14.6-2+deb10u1 armhf network-manager-fortisslvpn-gnome/stable 1.2.8-2 armhf network-manager-fortisslvpn/stable 1.2.8-2 armhf network-manager-gnome/stable 1.8.20-1.1 armhf network-manager-iodine-gnome/stable 1.2.0-3 armhf network-manager-iodine/stable 1.2.0-3 armhf network-manager-l2tp-gnome/stable 1.2.10-1 armhf network-manager-l2tp/stable 1.2.10-1 armhf network-manager-openconnect-gnome/stable 1.2.4-2 armhf network-manager-openconnect/stable 1.2.4-2 armhf network-manager-openvpn-gnome/stable 1.8.10-1 armhf network-manager-openvpn/stable 1.8.10-1 armhf network-manager-pptp-gnome/stable 1.2.8-2 armhf network-manager-pptp/stable 1.2.8-2 armhf network-manager-ssh-gnome/stable 1.2.10-1 armhf network-manager-ssh/stable 1.2.10-1 armhf network-manager-strongswan/stable 1.4.4-2 armhf network-manager-vpnc-gnome/stable 1.2.6-2 armhf network-manager-vpnc/stable 1.2.6-2 armhf network-manager/stable,now 1.14.6-2+deb10u1 armhf [installed] networkd-dispatcher/stable 2.0-2 all networking-bagpipe-doc/stable 9.0.0-2 all networking-bgpvpn-doc/stable 9.0.0-1 all networking-mlnx-common/stable 1:13.1.0-2 all networking-mlnx-eswitchd/stable 1:13.1.0-2 all