問題タブ [vlan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - RAW ソケットを介した仮想 VLAN インターフェイスでのイーサネット フレームの複製
生のイーサネット フレームを使用しています。Linux マシンにイーサネット インターフェイス eth0 と仮想 VLAN インターフェイス eth0.100 があります。私の RAW ソケットは、仮想インターフェイス eth0.100 にバインドされています。問題は、VLAN タグ付き (VLAN ID=100) フレームが外部からこのインターフェースに送信されると、アプリケーションが同じイーサネット フレームの 2 つのコピーを取得することです。アプリケーションからは、これらのフレームの違いはわかりません。ペイロードの内容はまったく同じです。インターフェイスがプロミスキャス モードで動作していません。
フレームをキャプチャするために tcpdump を使用しました。以下は結果です。
- eth0: VLAN タグ付きのフレームを 1 つ取得します - 100。
- eth0.100: これは、VLAN タグが付けられていない 1 つのフレームを取得します。
eth0 にバインドすると、フレームのコピーが 2 つ取得されます。しかし、eth0.100 を削除して eth0 にバインドすると、コピーが 1 つだけ取得されます。eth0.100 にのみバインドされている場合でも、アプリケーションは eth0 から 1 つと eth0.100 から 1 つのフレームの 2 つのコピーを取得していますか?
BPF を使用しようとしましたが、eth0.100 で使用するフィルターがわかりません。
networking - 1 対多のサブネット/VLAN 構成の明確化
私は、推奨される 1 対 1 の実装以外で、IP サブネットと VLAN の間の代替多重度を調査しています。私の理解は次のとおりです。
単一の VLAN への複数のサブネット (スイッチ経由で接続):
- 両方のサブネットにまたがるホストは、レイヤー 2 ブロードキャスト (ARP など) を受信しますが、ホストをターゲットとする IP がないトラフィックは無視します。
質問: フレーム ヘッダーに宛先 MAC アドレスを手動で挿入できれば、レイヤ 3 デバイスなしでサブネット間で通信できますか? 私の理解では、レイヤー 2 スイッチは異なるサブネットに気付かず、宛先 MAC アドレスの場所を知っていると仮定すると、パケットをその方向に転送します。宛先の PC は、その IP アドレスと MAC アドレスを確認してパケットを受け入れ、ルーティングされることなく効果的にサブネットを通過できるようにします。
複数の VLAN にわたる単一のサブネット:
- ブロードキャスト トラフィックは、個々の VLAN に分離されます。これは ARP を破壊します。同じサブネット内の別のマシンを対象とするホスト (ただし別の VLAN 内にあることを知らずに) は、決して応答されない ARP 要求を送信するためです。
これにより、VLAN ごとに個別の同一のアドレス プールが効果的に作成されますが、VLAN 間通信が試行されたときにルーターが 2 つをどのように区別するかはわかりません。この構成の長所/短所については少しわかりません..
なぜ私たちはこれをしたいのでしょうか?
c - IP_PKTINFO socket option not working
I have been banging my head on this one for a few weeks now and am finally submitting to the fact that I just can't figure it out. I have also been working with networking engineers on my team to no avail. My problem is as follows:
I am working on an application that does pretty straight forward UDP group joins on multiple vlans (each vlan is exposed as its own virtual interface, the NIC in this case is a SolarFlare if that is relevant). All of these joins happen on a single socket (where the messages are de-duplicated based on payload sequence numbers). Prior to doing the IP_ADD_MEMBERSHIP I am setting socket options like this:
I need to get at either the interface index via IP_PKTINFO or the vlan id via PACKET_AUXDATA in order to gather statistics downstream. Now, everything initializes without error and I am able to process UDP payloads without issue. Where I run into trouble is when I attempt to access the ancillary / control messages requested above as demonstrated with the simple debug logging:
For every packet received, this only outputs:
For reference, SOL_SOCKET=1 and SO_TIMESTAMP=29. So, although I am requesting 3 different control message types, only the timestamping is being populated. This behavior is independent of whether I am joining a single UDP group on a single interface or multiple groups on multiple interfaces.
One solution would be to rewrite the application to put each interface on its own socket, and then funnel everything into a queue, but in my experience the context switching kills the performance of the app. According to the manual page ip(7) IP_PKTINFO has been available since Linux kernel 2.2. I am running Ubuntu 14.04.4 which uses kernel 3.13.0-24-generic.
Any help, insight or direction would be greatly appreciated!
linux - Vxlan タグを追加して、Docker コンテナーの異なるグループを分離する方法
まず、ip コマンドに基づくタグを使用して VXLAN インターフェイスを作成することを認識しています。
ip link add vxlan-br0 type vxlan id <tag-id> group <multicast-ip> local <host-ip> dstport 0
しかし、それは私の実際の要求には役に立ちません。私の要求は、次のような異なるタグを使用して複数の Docker コンテナーを分離することです。
brctl addif br1 veth111111 tag=10 # veth111111 is the netdev used by docker container 1
brctl addif br1 veth222222 tag=20 # veth222222 is the netdev used by docker container 2
brctl addif br1 veth333333 tag=10 # veth111111 is the netdev used by docker container 3
コンテナ 2 をコンテナ 1 と 3 から分離したいのですが、コンテナ 1 と 3 の間の通信を分離したくありません。これを達成するにはどうすればよいですか?
networking - 802.1Q が元のフレームをカプセル化しないのはなぜですか?
VLANについて勉強中です。何時間もの検索の結果、802.1Q は元のフレームをカプセル化せず、代わりに元のフレームの送信元 MAC アドレスと「EtherType」フィールドの間に 32 ビット フィールドを追加することがわかりました。しかし、理由がわかりません。802.1Q が元のフレームをカプセル化しない理由を誰か説明してもらえますか? どうもありがとう。
linux - カーネル モジュールのビルド [リンク時に未定義の参照を取得する]
8021q 呼び出しを使用するモジュールをコンパイルしようとしています。/lib/modules/[version]/build/net/8021q に makefile と kconfig を使用して 8021q をインストールしました。ただし、ビルドしようとすると、次のメッセージが表示されます。
モジュールを構築するのは初めてなので、この関数を自分のモジュールから見えるようにするにはどうすればよいですか?
私のコードブロック(エラーがいっぱいですが、例として):
私のメイクファイル:
助けてくれてありがとう!
networking - 同じネットワーク上に複数の IP があるため、Packetfence を構成できません
仮想マシンに PacketFence をインストールしようとしていますが、サーバー専用の 8 つの IP があります。
それらはすべて eth1:0 -> eth1:7 で静的であるため、eth1、eth2 などではありません。
Packetfence で「通常」、「登録」などの VLAN を構成しようとすると、異なるネットワーク上にある必要があるというエラーが表示されます。
ネットワークを物理的に分離しないと、Packetfence をインストールできませんか?