3

В настоящее время я подключен к сети с маской подсети 169.254.0.0 и шлюзом 169.254.20.1.

С компьютера под управлением Windows я могу получить доступ к Интернету и локальной сети в этой сети.

Но всякий раз, когда я подключаюсь к этой сети с компьютера с Linux, я не могу получить доступ к Интернету, но могу получить доступ только к локальной сети.

В перехвате Wireshark я видел, что все IP-пакеты, выходящие за пределы локальной сети, имеют исходный IP-адрес, 0.0.0.0 , я думаю, что именно поэтому я не получаю никакого ответа.

Я использовал Кали.

Может кто-нибудь сказать мне, что может быть не так?

3 ответа3

4

Кто бы ни настраивал сеть этого хостела, он ошибался, используя локальную подсеть RFv 3927 IPv4 Link (169.254.0.0/16), где он должен был использовать частную подсеть RFC 1918 (192.168.0.0/16, 172.16.0.0/12, 10.0). .0.0/8) как частная подсеть NAT.

Это нарушает «1.6 Запрет на альтернативное использование» RFC 3927.

Поэтому неудивительно, что у некоторых клиентов возникают проблемы с этой конфигурацией. Вы можете попытаться статически настроить Linux для адреса в диапазоне адресов 169.254.0. [1-255] или 169.254.255. [0-254], но с подсетью /16 (255.255.0.0). маска. Эти два диапазона в подсети обычно зарезервированы для случаев, когда вам действительно необходимо статически настроить что-то в локальной подсети IPv4. Статически настройте один из известных маршрутизаторов шлюза NAT (например, 169.254.10.1) в качестве шлюза по умолчанию.

Я не даю никаких гарантий, что это предложение сработает. Ради всех, было бы лучше, если бы вы помогли этому хостелу настроить свою сеть для лучшего соответствия соответствующим стандартам.

2

Резюме

Вы должны проверить объем 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.

Заметки

  1. Это решение имеет существенный недостаток в использовании статического адреса. Он не подходит для локальных сетей хостинга и DHCP.
  2. Я почти уверен, что где-то есть одна простая строка конфигурации, чтобы дать системе команду дать глобальную область видимости адресам локальной ссылки (169.254.0.0/16). Но я еще не нашел это. Дайте мне знать, пожалуйста, если вы это сделаете.
  3. Обратите внимание, что некоторые старые и только зрелые дистрибутивы не имеют этой проблемы. Например, Fedora 12 и новый Centos 6.8 (все они имеют старое ядро 2.6.32) предоставляют глобальную область видимости для локальных адресов.
  4. Если кто-то изменит область действия для связи с этими искажениями, он столкнется с обсуждаемой проблемой: исходные IP-адреса всех нелокальных исходящих IP-пакетов будут заменены на 0.0.0.0 .
  5. Интересно узнать, что делает это заменой. Если бы я знал это, я бы нашел ответ на пункт 2.
  6. В глобальном масштабе нелокальные исходящие IP-пакеты отлично маршрутизируются маршрутизатором NAT, встроенным в недавнюю рабочую станцию VMWare, и машиной Linux с Fedora 12, работающей в качестве маршрутизатора, несмотря на RFC.
2

169.254.xx не маршрутизируемый, он не пропускает маршрутизатор, он может находиться только в своей подсети.

Это может быть направлено, но это не должно быть.

Из RFC 5735

Это блок "link local". Как описано в RFC3927, он выделен для связи между хостами по одному каналу. Хосты получают эти адреса с помощью автоматической настройки, например, когда DHCP-сервер не может быть найден.

Также из RFC 3927

Хост НЕ ДОЛЖЕН отправлять пакет с адресом IPv4 Link-Local на любой маршрутизатор для пересылки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .