У меня Android 6.0 SoC (ODroid C2), что я пытаюсь напрямую подключиться к встроенной машине Linux через обычный Ethernet или Ethernet через USB (через модуль g_ether)
На машине Linux работают две службы, к которым мне нужно получить доступ с устройства Android: одна - это веб-сервер, работающий на порту 8088, а другая - служба очереди сообщений (ZeroMQ)
Когда у меня есть и устройство Linux, и устройство Android, подключенные к нашей доменной сети, я могу подключиться к веб-службе в браузере с Android или моей машины разработчика Windows, а также могу подключиться к портам очереди сообщений из любой среды. Что мне нужно сделать сейчас, так это включить Android-устройство для прямого подключения к Linux-машине (Android-устройство будет запускать управляющее приложение с графическим интерфейсом для Linux-машины).
Вот что я пробовал:
# ip addr flush eth0
# ip addr add 169.254.1.1/16 dev eth0
# ip addr show eth0
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:06:0c:01:10:27 brd ff:ff:ff:ff:ff:ff
inet 169.254.1.1/16 scope global eth0
valid_lft forever preferred_lft forever
# ip route show
169.254.0.0/16 dev eth0 src 169.254.1.1
root@odroidc2:/ # ip addr flush eth0
root@odroidc2:/ # ip addr add 169.254.1.2/16 dev eth0
root@odroidc2:/ # ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1e:06:35:be:c8 brd ff:ff:ff:ff:ff:ff
inet 169.254.1.2/16 scope global eth0
valid_lft forever preferred_lft forever
root@odroidc2:/ # ip route show
169.254.0.0/16 dev eth0 proto kernel scope link src 169.254.1.2
# ping -c 5 169.254.1.2
PING 169.254.1.2 (169.254.1.2) 56(84) bytes of data.
64 bytes from 169.254.1.2: icmp_seq=1 ttl=64 time=3.83 ms
64 bytes from 169.254.1.2: icmp_seq=2 ttl=64 time=2.25 ms
64 bytes from 169.254.1.2: icmp_seq=3 ttl=64 time=2.15 ms
64 bytes from 169.254.1.2: icmp_seq=4 ttl=64 time=2.20 ms
64 bytes from 169.254.1.2: icmp_seq=5 ttl=64 time=2.21 ms
--- 169.254.1.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4011ms
rtt min/avg/max/mdev = 2.159/2.532/3.836/0.655 ms
# arp -a
? (169.254.1.2) at 00:1e:06:35:be:c8 [ether] on eth0
root@odroidc2:/ # ping -c 5 169.254.1.1
PING 169.254.1.1 (169.254.1.1) 56(84) bytes of data.
64 bytes from 169.254.1.1: icmp_seq=1 ttl=64 time=2.27 ms
64 bytes from 169.254.1.1: icmp_seq=2 ttl=64 time=1.56 ms
64 bytes from 169.254.1.1: icmp_seq=3 ttl=64 time=1.75 ms
64 bytes from 169.254.1.1: icmp_seq=4 ttl=64 time=1.69 ms
64 bytes from 169.254.1.1: icmp_seq=5 ttl=64 time=1.82 ms
--- 169.254.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 1.565/1.823/2.278/0.242 ms
root@odroidc2:/ # arp -a
? (169.254.1.1) at 00:06:0c:01:10:27 [ether] on eth0
169.254.1.1
адрес для машины Linux, ничего не происходит, пытаюсь ли я ударить 169.254.1.1:8088
в браузере для веб-сервера или отправив запрос на соединение в очередь сообщений из нашего управляющего приложения. Я попытался посмотреть исходящий трафик с устройства Android через tcpdump -i eth0 -Q out
но он вообще не показывает исходящих пакетов, например, ни браузер, ни управляющее приложение даже не пытаются установить соединение.Итак, вопрос в том, что мне здесь не хватает? Как я уже сказал, исходящие пакеты вообще не генерируются, когда я пытаюсь подключиться к любой из конечных точек - в браузере я получаю сообщение ERR_INTERNET_DISCONNECTED
сообщение об ошибке - есть ли системная настройка Android, которую мне не хватает, которую мне нужно изменить, прежде чем система даже попытается исходящие подключения, если у нее нет действующего подключения к Интернету? Мне также интересно, не повезет ли мне, если я буду использовать более новую версию ядра Android - устройство, которое мы используем сейчас, работает под управлением Android 6.0 в образе, предоставленном производителем оборудования, но эта итерация оборудования будет продлится до конца этого года, так что это не сработает для нашего графика выпуска, и в какой-то момент мы будем обновляться до более нового устройства, возможно, раньше, чем позже, если Android 6 будет сдерживать нас.