VLAN 장치 eth0.100을 192.168.1.100으로 설정했습니다. eth0의 주소는 10.137.16.108입니다.
해당 주소를 사용하여 핑을 하면 정상적으로 작동하는 것 같습니다.
$핑 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을 수행하면 대상 호스트에 연결할 수 없습니다.
$ 핑 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를 사용하여 원시 소켓을 보내려면 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)
당신의 도움을 주셔서 감사합니다.
베드로