Не удалось разрешить интерфейс «tun»: нет такого устройства
Я пытаюсь использовать wireguard, но когда я пытаюсь использовать его с
wg-quick up
Я получаю ошибку.
wg-quick up test
Warning: `/etc/wireguard/test.conf' is world accessible
[#] ip link add test type wireguard
[#] wg setconf test /dev/fd/63
[#] ip -4 address add 172.16.0.29/32 dev test
[#] ip -6 address add fd::29/128 dev test
[#] ip link set mtu 1395 up dev test
[#] resolvconf -a tun.test -m 0 -x
Failed to resolve interface "tun": No such device
[#] ip link delete dev test
Когда я проверил вопросы других, я обнаружил, что у меня нет 'tun.ko.gz' (`find /lib/modules/ -iname 'tun.ko.gz'` ничего не возвращает), поэтому я не могу загрузить 'тун'.
$ uname -r
> 5.11.0-40-generic
Я использую Убунту 20.04
2 ответа
Бегsudo apt purge resolvconf
и перезагрузка устранила проблему.
Я нашел хорошее рабочее решение, используя PostUp в конфигурационном файле wireguard.
Вместо того, чтобы использовать:
DNS = <ip>
Вместо этого попробуйте это в разделе [Интерфейс]:
PostUp = resolvectl dns %i <ip>
(если у вас уже есть PostUp, просто добавьте еще один)
Это настроит интерфейс wireguard для использования указанного
<ip>
в качестве DNS-сервера для этого интерфейса. Вы также можете добавить поиск по домену, если хотите:
PostUp = resolvectl dns %i <ip>; resolvectl domain %i \~domain
(замените «домен» фактическим суффиксом домена, который вы хотите найти, но оставьте
\~
)В PostDown нет необходимости, потому что тогда пропадет интерфейс wireguard (к которому привязан этот конфиг).
Просто удалениеDNS=*.*.*.*
для некоторых людей это может быть нормально, потому что вы сможете подключиться к wireguard без ошибок и сможете использовать Интернет как обычный пользователь VPN. Но в моем случае, если я удалю строку DNS, я не смогу подключиться к другим узлам, что для меня очень важно. PostUp — это полное исправление без каких-либо потерь.