LinuxでVLANがどのように機能するかについて、いくつかの根本的な誤解があるようですが、ここの優秀な人々が私を教育してくれることを願っています。
キャスト:1つのCisco 3560、1つのVLAN、および1つのLinuxボックス[1]。
Cisco --------------- Linux
ge0/1 eth0
Ciscoには、IPアドレス10.40.37.252/24のVlan 37インターフェイスがあります。Linuxボックスに10.40.37.1/24を配置します。
シスコがVLAN 37のカプセル化を解除すると、すべて正常に動作します[2]。
# Cisco
interface Vlan37
ip address 10.40.37.252/24
interface GigabitEthernet 0/1
switchport mode access
switchport access vlan 37
# Linux
ip link set eth0 up
ip addr add 10.40.37.1/24 dev eth0
$ ping 10.40.37.252 && echo It works
ただし、ポートをトランキングに設定し、Linux側でvlan 37を割り当てると、動作しなくなります。
# Cisco
interface GigabitEthernet 0/1
switchport trunk encapsulation dot1q
switchport mode trunk
! [3] [4] [7]
# Linux
vconfig add eth0 37
ip link set eth0.37 up
ifconfig eth0 0.0.0.0 up # ensure no address
ip addr add 10.40.37.1/24 dev eth0.37
$ ping 10.40.37.252 || echo Why does this not work
ここで何が欠けていますか?
編集:ソリューション:
ShaneのMACアドレステーブルに関する質問は私に解決策を導きました:「ip addr」を使用して、各VLANサブインターフェースに異なる一意のL2(MAC)アドレスを設定すると、突然機能します。
(ハードウェアが古すぎるため)試さなかったもう1つの解決策は、「ethtool」を使用してNIC自体によるVLANオフロードを無効にし、カーネルにタグを処理させることです。
シェーン、ありがとう!
編集:コメントごとの詳細情報:
全体的な目標は、3つのvlan(パブリック、プライベート、oam&p)がlinuxボックスの3つの個別のIPアドレスで終端し、さまざまなアプリケーションがローカルアドレスにバインドすることです。必要に応じてさらに拡張できますが、問題の説明とディスカッションをシンプルに保つようにしています。3つのVLANを機能させる前に、1つは機能する必要があるからです。:)
アントワーヌ - > ifupを対ifconfigコマンドには違いはありません。
Pepoluan- >これがあなたが探していたものだと思います。phyドライバによる参照の欠如は明らかに正常であることに注意してください。[5]
$ lsmod | grep 802
8021q 25545 1 cxgb3
便利屋 ->
$ ifconfig eth0
eth0 Link encap: Ethernet HWaddr 00:17:08:92:87:22
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 [...]
TX packets:31932 errors:0 dropped:0 overruns:0 carrier:0
$ ifconfig eth0.37
eth0.37 Link encap: Ethernet HWaddr 00:17:08:92:87:22
UP BROADCAST RUNNING MULTICAST MUT:1500 Metric:1
RX packets: 0 [...]
TX packets:32024 errors:90 dropped:0 overruns:0 carrier:0
$ cat /proc/net/vlan/config
VLAN Dev Name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.37 | 37 | eth0
チャックは - >のwiresharkおよび/またはtcpdumpのタグを表示しませんが、これは明らかに、カーネル内のVLANの取り扱いとPCAPの処理順序によるLinux上で通常の制限、[6]です。また、タグなしVLANは1に設定されます[7]。
[1]私はCentOS 5.5とUbuntu 11.04の両方でこれを試しましたが、どちらにも同じ問題があります。
[2]設定はカットアンドペーストではないので、ここでのタイプミスは単に私の悪いメモリです。
[3]「nonegotiate」をオンまたはオフにしても、問題には影響しません。
[4] VLAN 37はリンク上でアクティブかつ非プルーニングとして表示されるため、「許可」は問題ではありません。
[5] serverfault:NICで8021qを有効にする
[6] http://wiki.wireshark.org/CaptureSetup/VLAN#Linux
[7]ネイティブ(タグなし)VLANは1です。「switchport trunk native vlan 1」で手動で設定しても効果はありません。
lsmod
Linuxボックスに投稿できますか?
ifconfig eth0.37
、および/またはifconfig -a
どのように見えますか?
/proc/net/vlan/config
?
sho mac address-table vlan 37
?