Проверка IP-адреса на другом интерфейсе, отличном от принимающего сигнал


1

У меня есть PCa и PCb.

РПЖ:

$> ip addr && ip route
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:13:3b:0f:24:fc brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.150/24 brd 192.168.3.255 scope global eth6
       valid_lft forever preferred_lft forever
    inet6 fe80::213:3bff:fe0f:24fc/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether f8:b1:56:ba:ae:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.150/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.150/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.18.0.150/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a00:801:19:1:288f:db46:14ef:cca8/64 scope global temporary dynamic 
       valid_lft 546270sec preferred_lft 27270sec
    inet6 2a00:801:19:1:50c3:7b14:61bc:1bc0/64 scope global temporary deprecated dynamic 
       valid_lft 460473sec preferred_lft 0sec
    inet6 2a00:801:19:1:fab1:56ff:feba:aeee/64 scope global dynamic 
       valid_lft 2591993sec preferred_lft 604793sec
    inet6 fe80::fab1:56ff:feba:aeee/64 scope link 
       valid_lft forever preferred_lft forever
5: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default 
    link/gre 10.110.2.204 brd 10.110.0.115
6: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: netgw@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1256 qdisc noqueue state UNKNOWN group default 
    link/gre 10.110.1.222 peer 10.110.0.115
    inet 192.168.4.1/24 scope global netgw
       valid_lft forever preferred_lft forever
default via 172.18.0.1 dev eth0 
169.254.0.0/16 dev eth6  scope link  metric 1000 
172.18.0.0/24 dev eth0  proto kernel  scope link  src 172.18.0.150 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.150 
192.168.3.0/24 dev eth6  proto kernel  scope link  src 192.168.3.150 
192.168.5.0/24 dev netgw  scope link 
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.150

PCb:

bash# ip addr && ip route
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:05:68:02:68:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.1/24 brd 192.168.3.255 scope global eth0
3: tunl0: <NOARP> mtu 1480 qdisc noop 
    link/ipip 0.0.0.0 brd 0.0.0.0
4: gre0: <NOARP> mtu 1476 qdisc noop 
    link/gre 0.0.0.0 brd 0.0.0.0
5: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:05:68:03:68:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.2/24 brd 192.168.3.255 scope global eth1
7: netpc@NONE: <POINTOPOINT,NOARP,UP,10000> mtu 1476 qdisc noqueue 
    link/gre 10.110.0.115 peer 10.110.1.222
    inet 192.168.5.1/24 scope global netpc
19: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,10000> mtu 1280 qdisc pfifo_fast qlen 3
    link/ppp 
    inet 10.110.1.16 peer 192.168.111.111/32 scope global ppp0
192.168.111.111 dev ppp0  proto kernel  scope link  src 10.110.1.16 
10.99.196.40 dev ppp0  scope link 
8.8.8.8 dev ppp0  scope link 
192.168.4.0/24 dev netpc  scope link 
192.168.3.0/24 dev eth0  proto kernel  scope link  src 192.168.3.1 
172.18.0.0/24 dev eth0  scope link 
224.0.0.0/4 dev eth0  scope link

PCa, eth6 подключен к PCb, eth0 через кабель Ethernet.

Сейчас, пинг 172.18.0.150 на PCb дает:

bash# ping 172.18.0.150
PING 172.18.0.150 (172.18.0.150) 56(84) bytes of data.
64 bytes from 172.18.0.150: icmp_seq=1 ttl=64 time=4.31 ms
64 bytes from 172.18.0.150: icmp_seq=2 ttl=64 time=0.848 ms

Таким образом, пинг идет на eth0 на PCb Я предполагаю, и приходит на eth6 на PCa , Дело в том, что это eth0 на PCa это имеет 172.18.0.150 Айпи адрес. Почему я получаю ответ от eth0 на PCa , когда eth0 на PCb действительно связан с eth6 на PCa ?

Разве IP не привязан только к самому интерфейсу? Это ожидаемое поведение? Не берите в голову туннели и прочее ...

Ответы:


2

Да, это ожидаемое поведение. Ответ ping сам по себе является IP-пакетом, и он каким-то образом не связан с пакетом, на который он отвечает. IP-пакеты не образуют «цепей» для последующих ответов, каждый пакет маршрутизируется независимо.

Асимметричная маршрутизация очень распространена в Интернете. Например, с трафиком, который пересекает страну, сеть назначения обычно выполняет длительные перевозки. Поэтому, если я пингую сервер на другой стороне страны, его провайдер передает запрос по всей стране, а мой провайдер передает ответ по всей стране. Таким образом, два маршрута очень, очень разные. Нет особой причины, по которой один путь должен быть похож на другой.


Но IP-адрес имеет интерфейс, а не сам компьютер, верно?
JohnyTex

1
@JohnyTex Это зависит от модель хоста , Чаще всего IP-адрес принадлежит самому компьютеру.
David Schwartz

1
@JohnyTex Главным образом потому, что так делали старые системы, и потому что иногда проще назначать и управлять ими таким образом. Но для людей, которые регулярно имеют дело с асимметричной маршрутизацией и более сложными настройками, это может стать источником раздражения, требуя назначения IP-адресов фиктивным интерфейсам и других подобных неприятностей. Думайте об этом как об этом "идет дождь". Язык требует, чтобы у вас было «это», чтобы сказать, что есть дождь, но нет ничего, что на самом деле идет дождь.
David Schwartz

1
@JohnyTex Не имеет значения, является ли маршрутизация симметричной или асимметричной. С ними обращаются точно так же. Моя цель в создании асимметричной маршрутизации - заставить вас перестать думать о такой симметричной маршрутизации, как будто это имеет значение Это правда, но это также не имеет значения.
David Schwartz

1
ОК, теперь я понимаю, что понимаю. Спасибо за ваш совет!
JohnyTex

1

Я думаю, что это больше связано со шлюзом по умолчанию, если вы используете Linux. Поскольку все интерфейсы находятся на одном хосте, любой исходящий трафик будет проходить через шлюз по умолчанию и связанный с ним интерфейс.

Так что это означает, что, несмотря на пинг определенного IP-адреса, ответ пришел через шлюз по умолчанию, что означает, что он пришел с интерфейса, связанного со шлюзом по умолчанию.

Попробуйте следующее, чтобы увидеть маршрут по умолчанию и интерфейсы, используемые для данного IP-адреса.

ip route

Запустите как root или используя sudo,


0

Имеет ли это какое-либо отношение к глобальной ссылке / области видимости и т. Д.?

Вероятно, это связано с таблицами маршрутизации и метриками. Пытаться

netstat -nr

в командной строке на PCb

Я ожидаю, что PCb убеждена, что интерфейс Eth2 "ближе", чем Eth1 к PCa.

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

Вы можете временно управлять таблицами маршрутизации, используя route команда (см. route /? )

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.