VLAN デバイス eth0.100 を 192.168.1.100 に設定しました。 eth0のアドレスは10.137.16.108です。
そのアドレスを使ってpingをすると正常に動作するようです。
$ping 10.137.16.108 -I 192.168.1.1
PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 : 56(84) bytes of data. 64 bytes from 10.137.16.108: icmp_seq=1 ttl=64 time=0.153 ms 64 bytes from 10.137.16.108: icmp_seq=2 ttl=64 time=0.058 ms 64 bytes from 10.137.16.108: icmp_seq=3 ttl=64 time=0.060 ms ^C --- 10.137.16.108 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.058/0.090/0.153/0.045 ms
ただし、デバイス名 eth0.100 を使用して同じ ping を実行すると、ターゲットホストに接続できません。
$ping 10.137.16.108 -I eth0.100
PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 eth0.100: 56(84) bytes of data. From 192.168.1.100 icmp_seq=1 Destination Host Unreachable From 192.168.1.100 icmp_seq=2 Destination Host Unreachable From 192.168.1.100 icmp_seq=3 Destination Host Unreachable ^C --- 10.137.16.108 ping statistics --- 5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4024ms
arpテーブルの問題だと思います。
$ARP
Address HWtype HWaddress Flags Mask Iface 10.137.16.108 (incomplete) eth0.100
SOL_SOCKETとSO_BINDTODEVICEを使用してrawソケットを送信するにはVLANデバイス名が必要なので、助けることができますか?
ありがとう
答え1
修正する:
私の目標は、10を超える小さな仮想マシンまたはプログラムの共有デバイス帯域幅の流れを制御することです。 vconfig コマンドを使用して仮想インターフェイスを作成し、tc コマンドを使用します。ホストと仮想開発間のトラフィックにアドレスを使用する場合、vconfig を使用した開発は問題ないようです。しかし、IPプロトコルを介したトラフィックに仮想開発タグを使用すると、間違っているように見えます。
私の問題に対する解決策を見つけました。この記事のように:[物理アダプタなしでコンピュータに仮想イーサネットインターフェイスを作成するには?
解決策は、iproute2ツールキットを使用することです。ピア仮想インターフェイスを作成します。
ip link add veth0 type veth peer name veth1
両方の仮想デバイスのアドレスを追加します。
sudo ip addr add 10.1.1.1/24 dev veth1 && ip set dev veth1 up
sudo ip addr add 10.1.1.2/24 dev veth1 && ip set dev veth2 up
その後、開発者名をveth2として10.1.1.1でpingを実行でき、正常に動作するようです。
ping 10.1.1.1 -I veth2
PING 10.1.1.1 (10.1.1.1) from 10.1.1.1 veth2: 56(84) bytes of data.
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.041 ms
^C
--- 10.1.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
私はvethクラスの仮想デバイスに仮想Macアドレスがあることを発見しました。たぶんARPとRARPで動作します。
veth1 Link encap:Ethernet HWaddr 1a:8d:89:82:da:68
inet addr:10.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
veth2 Link encap:Ethernet HWaddr 2e:11:c9:ad:9c:e7
inet addr:10.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ご協力ありがとうございます。
ピーター