私のデスクトップubuntuマシンでVLANインターフェイスを試してみようとしています。デスクトップには、会社のLANに接続されている単一のインターフェース(eth0)が1つだけあります。 vconfigを使用してvlanインターフェイスを作成した後、そのインターフェイスでWiresharkを実行しても、発信パケットがVLANタグ付きとして表示されません。これが私がしたことです:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.0.126 Bcast:192.168.0.255 Mask:255.255.255.0
etc...
次に、vlanインターフェイスを追加します。
$ Sudo vconfig add eth0 55
$ Sudo ifconfig eth0.55 192.168.10.100 netmask 255.255.255.0 up
$ Sudo ifconfig eth0.55 mtu 1412
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.0.126 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::862b:2bff:fe87:2c87/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12195 errors:0 dropped:0 overruns:0 frame:0
TX packets:7435 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6831057 (6.8 MB) TX bytes:1138706 (1.1 MB)
Interrupt:18
eth0.55 Link encap:Ethernet HWaddr 84:2b:2b:87:2c:87
inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::862b:2bff:fe87:2c87/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1412 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:168 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:23515 (23.5 KB)
これまでのところ良い..ここに追加の関連情報があります:
$ Sudo cat /proc/net/vlan/eth0.55
eth0.55 VID: 55 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 0
total bytes received 0
Broadcast/Multicast Rcvd 0
total frames transmitted 170
total bytes transmitted 23697
Device: eth0
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:
$ Sudo iptables -L -v
Chain INPUT (policy ACCEPT 3317 packets, 2230K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1528 packets, 189K bytes)
pkts bytes target prot opt in out source destination
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.55
次に、192.168.10.xxの範囲にある存在しないマシンにpingを実行してみます。
$ ping -I eth0.55 192.168.10.101
ただし、wiresharkまたはtcpdumpでこのインターフェイスをキャプチャすると、通常のarpメッセージが送信されているのがわかります。タグ付けされたVLANではありません。 (ここでの私の関心は、最初に自分のマシンからVLANパケットを取得できるかどうかを確認することです。実際のVLANでの作業は後で行われます)。同じマシンのvbox VMからeth0.55インターフェイスにpingすることもできます。
$ Sudo /usr/sbin/tcpdump -vv -i eth0.55
tcpdump: listening on eth0.55, link-type EN10MB (Ethernet), capture size 65535 bytes
11:55:52.625984 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.101 tell 192.168.10.100, length 28
11:55:53.625983 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.10.101 tell 192.168.10.100, length 28
私もset_flagコマンドを試しましたが、それでも行けません:
$ Sudo vconfig set_flag eth0.55 0
何が欠けていますか?
同様の質問は次のとおりです: VLANタグはtcpdumpを介したパケットキャプチャ(Linux)に表示されません
実際に見たのは、tcpdumpを使用しているときにカーネルによってフィルタリングされたパケットであり、vlanレイヤーが削除されているため、常にタグなしのように見えます。
/proc/net/vlan/eth0.55
を介して転送されたフレームがあることをすでに確認したので、非常にうまく機能します。
状況に応じて、このコマンドを使用してVLANタグを確認します。
tcpdump -Uw - | tcpdump -i eth0 -en -r - vlan 55
実際の802.1q
タグ、基礎となる物理インターフェースでキャプチャしてみてください、つまりeth0
、これはパケットが出入りする場所です。
おそらくあなたは何も見逃していないでしょう。
インターフェイスにvlanがない場合、tcpdumpで802.1qタグを確認できます。
vlanをインターフェイスに追加すると、8021qモジュールでハードウェアアクセラレーションが有効になり、...タグが表示されなくなります。サブインターフェースで分離されたトラフィックが表示されますが、メインインターフェースのtcpdumpには、タグが削除されたallサブインターフェースからのトラフィックが表示されます。
最新のethtool
を使用している場合は、ethtool -k eth0
の出力を確認し、ethtool -K eth0 rxvlan off; ethtool -K eth0 txvlan off;
でアクセラレーションを無効にすることができます(正直に言うと、それが役立つかどうかはテストしませんタグを表示し、適切なラボホストへのアクセス権がないため、現在確認できません)。
しかし、インフラストラクチャの残りの部分を構成し、それが期待どおりに機能するかどうかを確認する必要があると思います(8021qモジュールがロードされていない別のマシンでタグ付きarp要求を確認してください)。