Используя 2 адаптера Ethernet в локальной сети, проверьте с помощью ping-запросов ответ, не показывающий

У меня есть ноутбук, работающий с Ubuntu 15.10. Здесь существует один интегрированный сетевой адаптер, к которому я добавил другой через USB. У меня теперь есть два сетевых интерфейса, которые оба шоу, когда я ввожу ifconfig. Затем я настроил их обоих со статическим IP: eno0-> 192.168.0.21 (встроенный nic) eno1-> 192.168.0.22 (USB-nic)

Оба адаптера непосредственно к другому целевому ПК с кабелем Ethernet: 192.168.0.21-> 192.168.0.1 (целевой ПК 1) 192.168.0.22-> 192.168.0.2 (целевой ПК 2)

Затем у меня есть сценарий Python для отправки пакетов UDP с ноутбука на целевой ПК:

import socket
import time
#create socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind("192.168.0.21", 2000)
sock.sendto("test", ("192.168.0.1", 2000))

Это работает, если только один адаптер подключен. Когда оба адаптера будут подключены, это будет только работать на интерфейс, который соединился сначала. Я затем пытался отправить ping через интерфейс не работа. Позволяет говорят, что интерфейс eno0 работает и может успешно отправить пакеты UDP с помощью сценария Python, затем это не будет работать:

ping -I eno1 192.168.0.2

Это показывает, что пакеты оставляют ПК, и через Wireshark I видят, что они оставляют nic, я могу даже видеть, что целевой ПК отправляет ответ, но в терминале это не показывает и при прерывании с ctrl+c, я вижу, что 5 пакетов были, отправляют, и все они потерялись. Проверка с помощью ping-запросов через eno0 работает превосходная к целевому ПК.

Как я фиксирую это?

0
задан 14 January 2016 в 16:09

1 ответ

Я думаю, что это работает, как это, как предполагается. Я полагаю, что у Вас есть проблемы с таблицей маршрутизации.

при подключении первого адаптера, маршрутизация по умолчанию настраивается через этот адаптер. При соединении другого маршрутизация по умолчанию уже является установкой для первого адаптера. Второй адаптер не работает, потому что нет никакой маршрутизации, которая использовала бы его. Попробуйте к типу /sbin/route /sbin/route -n. Вы будете видеть, как пакеты направляются.

я добавил бы маршруты для Ваших двух соединений, потому что, если я понимаю правильно, Вы только хотите отправить свои пакеты UDP через эти соединения. Что относительно другого трафика? Попробуйте его этот путь:

/sbin/route add -net 192.168.0.1 netmask 255.255.255.255 dev eno0
/sbin/route add -net 192.168.0.2 netmask 255.255.255.255 dev eno1

Таким образом Вы указываете, что трафик для 192.168.0.1 должен пойти через eno0 и трафик для 192.168.0.2 через eno2. Если Вам только нужны они к соединениям, это должно работать. Однако, если Вы имеете другое соединение и хотите, чтобы они работали также. Необходимо было бы удостовериться, что другие маршруты правильны также.

я рекомендовал бы использовать различные диапазоны адресов для двух соединений. Таким образом Вы не должны изменять таблицы маршрутизации вручную:

eno0: 192.168.0.21, PC1: 192.168.0.1
eno1: 192.168.1.22, PC2: 192.168.1.2
netmask: 255.255.255.0 for all connections
default gateway is not important in this case, because pairs are on the same network range
0
ответ дан 29 September 2019 в 14:11

Другие вопросы по тегам:

Похожие вопросы: