В туннеле точка-точка мне удавалось дважды иметь один и тот же IP-адрес. Это похоже на ошибку, я думаю, это может быть связано с каким-то внутренним представлением сетевой маски. Это можно воспроизвести, выполнив следующие действия.
Я создал туннель туннеля следующим образом:
ip tuntap add dev tun3 mode tun user alice group alice
ip address add 10.8.0.1 peer 10.8.0.2/32 dev tun3
Я указал адрес:
$ ip address list dev tun3
…
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun3
…
Как видите, похоже, что с 10.8.0.1 нет сетевой маски. Но ifconfig сообщает / 32:
$ ifconfig tun3
…
inet 10.8.0.1 netmask 255.255.255.255 destination 10.8.0.2
…
Если я использую iproute2
чтобы добавить тот же адрес 10.8.0.1/32, ошибки нет, адрес добавляется и затем отображается.
# ip address add 10.8.0.1/32 dev tun3
$ ip address list dev tun3
…
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun3
…
inet 10.8.0.1/32 scope global tun3
…
Вопрос в том, почему? Я ожидал:
RTNETLINK answers: File exists
Если вам интересно, зачем мне это пробовать, я пытался помочь с этот вопрос.
Вместо того, чтобы использовать ifconfig
для присвоения IP-адреса вы можете использовать ip
из пакета iproute2. Его руководство описывает это довольно ясно:
man ip-address
: "…
одноранговый АДРЕС адрес удаленной конечной точки для интерфейсов точка-точка. И снова АДРЕС может сопровождаться косой чертой и десятичным числом, кодирующим длину префикса сети. Если указан одноранговый адрес, локальный адрес не может иметь длину префикса.. Сетевой префикс связан с одноранговым узлом, а не с локальным адресом.
… »