1

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

Я успешно настроил eth0 на моем устройстве с помощью dnsmasq, который служит сервером DHCP. Это работает довольно хорошо. Я подозреваю, что мне потребуется более 254 клиентов, поэтому я решил создать сеть /20.

Теперь я также успешно настроил wlan0 своего устройства для подключения к той же самой dnsmasq, выдавая IP-адреса, подключающиеся к его точке доступа. Это я тоже смог сделать.

eth0      Link encap:Ethernet  HWaddr b8:27:eb:92:22:c6
          inet addr:1.0.0.1  Bcast:1.0.15.255  Mask:255.255.240.0
          inet6 addr: fe80::ba27:ebff:fe92:22c6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2113 errors:0 dropped:0 overruns:0 frame:0
          TX packets:323 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:134909 (131.7 KiB)  TX bytes:21087 (20.5 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3576 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3576 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:252704 (246.7 KiB)  TX bytes:252704 (246.7 KiB)

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:c7:77:93
          inet addr:1.0.0.2  Bcast:1.0.15.255  Mask:255.255.240.0
          inet6 addr: fe80::ba27:ebff:fec7:7793/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:938 errors:0 dropped:1 overruns:0 frame:0
          TX packets:3552 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:150695 (147.1 KiB)  TX bytes:279694 (273.1 KiB)

и мой dnsmasq существо:

interface=eth0,wlan0
listen-address=1.0.0.1,1.0.0.2
bind-interfaces
local=/argos/
domain=argos
domain-needed
bogus-priv
dhcp-sequential-ip
dhcp-range=1.0.0.3,1.0.15.254,255.255.240.0,36h

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

Однако, если я укажу, какой интерфейс использовать для проверки связи, он, похоже, найдет свой путь:

ping -I eth0 1.0.0.3

Так что я думаю, что на маршруте есть целая путаница. Как я могу решить это? Учитывая, что независимо от того, подключены ли вы через eth0 или wlan0, устройство одно и то же, я в недоумении, почему это не работает.

1 ответ1

1

Одна подсеть должна принадлежать одному интерфейсу, поскольку она в основном описывает, какие хосты находятся в одном и том же широковещательном домене (то есть могут связываться друг с другом напрямую на уровне Ethernet 2).

  • Если узлы в одной и той же подсети пытаются связаться друг с другом, они не будут пытаться использовать маршрутизатор - вместо этого они будут пытаться напрямую узнать MAC-адрес друг друга (используя ARP).

  • Если трафик поступает из другой сети (или от самого маршрутизатора), ваш маршрутизатор не будет пытаться определить, должны ли пакеты для каждого отдельного хоста маршрутизироваться через eth0 или wlan0 - он будет использовать тот же маршрут /20 (обычно через eth0) для всех из них.

Если вы хотите использовать одну подсеть, правильным способом "связать" оба интерфейса было бы установить мостовой интерфейс (который действует как коммутатор, пересылающий кадры Ethernet на основе MAC-адреса) и установить оба физических интерфейса в качестве портов моста.

(IP-адрес и dnsmasq также будут установлены на интерфейсе br0 вместо eth0.)

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

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