سؤال

أنا أختبر تنفيذ بروتوكول يتحدث بين جهاز كمبيوتر باستخدام Ethernet (وليس IP). من أجل ألا يكون لديك بالفعل جهاز كمبيوتر فعلي ، أريد إنشاء واجهتين افتراضيتين من Ethernet. ستكون هذه قادرة فقط على التحدث مع بعضها البعض ، لذلك يرتبط برنامج نقطة النهاية بواجهة واحدة وستتربط نقطة النهاية الأخرى مع الآخر.

هل هذا ممكن وكيف أفعل ذلك؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام VDE2 ، مفتاح افتراضي.

على سبيل المثال (ستحتاج إلى بعض المصطلحات):

# Install vde2 (assumes Debian/Ubuntu)
sudo aptitude install vde2
# Create the switch and two tap interfaces attached to it
sudo vde_switch -tap tap0 -tap tap1
# Configure the interfaces
sudo ip addr add 10.0.31.10 dev tap0
sudo ip addr add 10.0.31.11 dev tap1
# Start a server
socat - TCP-LISTEN:4234,bind=10.0.31.10
# Alternatively, an echo server:
#socat PIPE TCP-LISTEN:4234,bind=10.0.31.10
# Start a client
socat - TCP:10.0.31.10:4234,bind=10.0.31.11

اكتب على جانب واحد ، وسيظهر على الجانب الآخر.

نصائح أخرى

يمكنك استخدام برنامج تشغيل Ethernet الظاهري "TAP" والذي يتيح لبرنامج UsperSpace التظاهر بأنه واجهة Ethernet. هذه ميزة kernel قياسية لبعض الوقت الآن (قد لا يتم تمكينها في kernel رغم ذلك).

يمكنك استخدام NS3 لمحاكاة شبكة معقدة بين جهازين TAP إذا كنت في حاجة إليها: http://www.nsnam.org/

لقد حصلت على محاكاة مفتاحين ، عميل لاسلكي ، و AP ، بين حالتين VirtualBox.

رجل يتفاعل الرجل ifconfig

فقط أضف مقطعًا جديدًا في/etc/الشبكة/الواجهات

تكوين مثالي:

iface eth0 inet static
   address 192.168.2.150
   netmask 255.255.255.0
   network 192.168.2.0
   broadcast 192.168.2.255
   gateway 192.168.2.253
   # dns-* options are implemented by the resolvconf package, if installed
   dns-nameservers 8.8.4.4


iface eth0:1 inet static
    address 192.168.2.2
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.253
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 8.8.4.4

--

ETH0 لديه IP 192.168.2.150 بينما ETH0: 1 لديها 192.168.2.2

إذا كنت تريد الشبكة الفرعية الخاصة بك ولا تريد أن تهتم باستخدام VDE.

ينظر الى هذه. بالمختصر:

# tunctl -t eth0
Set 'eth0' persistent and owned by uid 0
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr a6:9b:fe:d8:d9:5e  
      BROADCAST 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:500 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

أو مع IP:

# ip tuntap add dev eth0 mode tap
# ip link ls dev eth0
  7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500
  link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff

يمكنك استخدام مثال أمر VConfig:

vconfig add eth0 10 #virtual interface eth0.10 will be created

ربما أفتقد شيئًا مهمًا .. لكن أليس هذا بالضبط ما هي واجهة Loopback (LO)؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top