У меня есть одно устройство с IP-адресом 192.168.1.110, а остальная сеть - 192.168.0.x. Маршрутизатор 192.168.0.1. 192.168.1.110 подключен к этому маршрутизатору. Другие устройства подключаются через WiFi к 192.168.0.5 (точка доступа Raspberry Pi), которая подключена к тому же маршрутизатору на 192.168.0.1.

Я пытаюсь получить доступ к 192.168.1.110 с устройства на 192.168.0.x. Я попытался добавить маршрут, который я вижу в таблице маршрутизации, но без кубиков.
Используя sudo route -n -v add 192.168.1.110 192.168.0.1 ping и время ожидания SSH.
При использовании sudo route -n -v add 192.168.1.110 192.168.0.5 Тайм-аут SSH и ping покажите ниже

PING 192.168.1.110 (192.168.1.110): 56 data bytes
Request timeout for icmp_seq 0
92 bytes from pi.hole (192.168.0.5): Redirect Host(New addr: 192.168.0.1)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 1369   0 0000  3f  01 e4b7 192.168.0.202  192.168.1.110 

Я также попытался изменить маску маршрутизатора на .254.0, вытащив точку доступа raspberry pi из цикла, но я все еще не могу получить доступ к устройству .1.110.

Если я изменю IP-адрес маршрутизатора на .1.x и одно из устройств .0.x, то получу доступ к устройству .1.110, но ни к одному из устройств .0.x. Я уверен, что это должно быть просто, но я не могу решить - что мне не хватает?

1 ответ1

0

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

Например, если вы измените маску сети на /23 (255.255.254.0), этого недостаточно на устройстве A - да, оно сможет напрямую связаться с устройством B, но куда устройство B отправит ответ? Если B все еще думает, что он находится на /24, он будет пытаться отправить ответ через шлюз.

Точно так же: даже если вы добавите правильный маршрут к устройству B, это не скажет устройству B, куда отправить ответ для устройства A. Оно все равно будет использовать то, что оно уже знает.

Предполагая, что вы вообще не можете перенастроить устройство B, но, по крайней мере, можете прочитать его конфигурацию, есть полтора способа сделать это.

  • Если вы знаете, какой IP-адрес "шлюза по умолчанию" настроен на устройстве-нарушителе, добавьте этот адрес в интерфейс локальной сети маршрутизатора - наряду с существующим адресом. (Это может называться "псевдонимом" в некоторых маршрутизаторах или "виртуальным IP" в других.)

    Например, если устройство хочет использовать 192.168.1.254 в качестве своего шлюза:

    ifconfig en0 192.168.1.254 netmask 255.255.255.0 alias         # for FreeBSD
    
    ip addr add 192.168.1.254/24 dev eth0                          # for Linux
    

    Другой общий адрес - 192.168.1.1. Один из способов узнать правильный адрес - посмотреть, какие ARP-запросы запрашивает устройство.

  • Если устройство не имеет шлюза , сконфигурированный на всех, но вы знаете , по крайней мере , его размер подсети, вы можете 1) сделать выше , с некоторым произвольным адресом в той же подсети, и 2) настроить маршрутизатор таким образом , что он будет маскироваться (SNAT) все коммуникации.

    Таким образом, устройство будет думать, что оно связывается только со своей подсетью.

    Я не знаю, как это сделать, но это будет включать в себя правила pf или iptables NAT.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .