Конечно, есть несколько решений. Самое простое - убедиться, что существует только один правильный маршрут по умолчанию.
Существует 3 ситуации:
- Вы подключены только через Bluetooth через s sh
- Вы подключены через Bluetooth и через Wi-Fi, но еще не через spla sh
- Вы находитесь через spla sh
Каждый из них потребует различной конфигурации сети.
В 1 ваша конфигурация сети, вероятно, будет быть:
- некоторый IP-адрес (назовем его IP-bt) и маску сети
- Шлюзом по умолчанию является ваш телефон
С route -n
вы можете проверить это.
Во 2, конфигурация сети будет немного зависеть от сети Wi-Fi, но в целом ваша конфигурация сети будет:
- у вас все еще будет IP -bt
- у вас будет новый адрес на адаптере wifi (который мы называем IP-wifi)
- шлюзом по умолчанию должен быть шлюз в сети wifi.
Если вы подтвердите это с помощью route -n
, вы все равно можете увидеть маршрут с пунктом назначения 0.0.0.0 к вашему телефону. Вы можете удалить этот маршрут. Ваш телефон должен быть подключен напрямую к сети, и поэтому ваш сеанс s sh не должен прерываться.
Если gw по умолчанию не подключен к сети Wi-Fi, вы все равно можете удалить маршрут, который устанавливает телефон по умолчанию gw.
В возрасте до 3 gw по умолчанию должен быть в сети Wi-Fi, а не на телефоне. Вы по-прежнему сможете пользоваться своим телефоном, поскольку он напрямую подключен.
В этом сценарии следует обратить внимание на то, что ваш телефон будет выполнять роль сервера DHCP. Это означает, что время от времени ваша аренда DHCP будет обновляться sh, и маршрут Bluetooth по умолчанию может появиться снова. Отключение Bluetooth предотвратит это.
Второе решение - использовать ifmetric
. Вместо того, чтобы сделать wlan0
более низким показателем c, сделайте свой Bluetooth более высоким показателем c. Снова подтвердите с помощью route -n
, что метрики соответствуют вашим ожиданиям. С помощью traceroute проверьте, как движутся пакеты.
Третий и наиболее сложный вариант - установить Quagga и настроить правильную маршрутизацию.