Резюме
Вы должны проверить объем IP-адреса вашего сетевого интерфейса. Если это link
, исходные IP-адреса ваших нелокальных исходящих пакетов будут заменены 0.0.0.0
. Если он global
, вы попадете в Интернет как обычно.
Объем IP-адреса можно найти в выходных данных команды ip address show
в разделе сетевого интерфейса.
Чтобы изменить область, вы можете использовать ip address del
чтобы удалить IP-адрес вашего хоста, а затем использовать ip address add
чтобы повторно добавить его с нужной областью. Если вы сделаете это, шлюз по умолчанию будет удален из таблицы маршрутизации. Итак, вы должны добавить его вручную.
Это все. После перечисленных выше шагов интернет должен работать.
пример
Вот пример (некоторые нерелевантные выходные данные усекаются, некоторые другие (не) имеют отступ):
# ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d1:09:56 brd ff:ff:ff:ff:ff:ff
inet 169.254.55.3/16 brd 169.254.255.255 scope link dynamic ens33
valid_lft 1596sec preferred_lft 1596sec
# ip addr del 169.254.55.3/16 dev ens33
# ip addr add 169.254.55.3/16 dev ens33 scope global
# ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d1:09:56 brd ff:ff:ff:ff:ff:ff
inet 169.254.55.3/16 scope global ens33
valid_lft forever preferred_lft forever
# ip route add default via 169.254.0.34 dev ens33
# ip route
default via 169.254.0.34 dev ens33
169.254.0.0/16 dev ens33 proto kernel scope link src 169.254.55.3
Протестировано на Fedora 23 и Centos 7.2 Live CD.
Заметки
- Это решение имеет существенный недостаток в использовании статического адреса. Он не подходит для локальных сетей хостинга и DHCP.
- Я почти уверен, что где-то есть одна простая строка конфигурации, чтобы дать системе команду дать глобальную область видимости адресам локальной ссылки (169.254.0.0/16). Но я еще не нашел это. Дайте мне знать, пожалуйста, если вы это сделаете.
- Обратите внимание, что некоторые старые и только зрелые дистрибутивы не имеют этой проблемы. Например, Fedora 12 и новый Centos 6.8 (все они имеют старое ядро 2.6.32) предоставляют глобальную область видимости для локальных адресов.
- Если кто-то изменит область действия для связи с этими искажениями, он столкнется с обсуждаемой проблемой: исходные IP-адреса всех нелокальных исходящих IP-пакетов будут заменены на
0.0.0.0
.
- Интересно узнать, что делает это заменой. Если бы я знал это, я бы нашел ответ на пункт 2.
- В глобальном масштабе нелокальные исходящие IP-пакеты отлично маршрутизируются маршрутизатором NAT, встроенным в недавнюю рабочую станцию VMWare, и машиной Linux с Fedora 12, работающей в качестве маршрутизатора, несмотря на RFC.