Как мне установить статический IP в Ubuntu?


56

Я новичок в Linux, имею многолетний опыт работы с серверами / десктопами Windows и у меня возникают проблемы с установкой статического IP. Я использую метод, использовавшийся в предыдущих версиях Ubuntu, который, похоже, не работает с 16.04

Я использовал команду sudo nano /etc/network/interfaceи добавил следующее

iface enp0s25 inet static
address 10.10.8.2
netmask 255.255.0.0
gateway 10.10.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Я перезагрузил систему, и Ethernet практически не работает, ping вообще не работает. Я попытался изменить /etc/NetworkManager/NetworkManager.confи сделал следующие изменения

#dns=dnsmasq (comment out the dnsmasq)
[ifupdown]
managed=true (changed from false)

С этим я могу заставить Ethernet работать время от времени, однако это в конечном счете терпит неудачу.

Я пробовал эту конфигурацию на двух других машинах, а также на виртуальной машине, и все они имеют одинаковые результаты. Я могу подтвердить, что эти настройки работают нормально, когда я устанавливаю Windows на любую из этих машин. Также, когда я позволяю DHCP автоматически настраивать, все работает нормально, никаких проблем.

Я полагаю, что я что-то здесь упускаю, настройка статического IP не должна быть сложной.


единственное, что я замечаю, и это, возможно, здесь была только опечатка, но я бы изменил на то, Dns-nameserversчто, dns-nameserversвероятно, ничего не сделаю, чтобы решить эту проблему, но могу остановить другие проблемы
Джон Орион

1
Dns-nameservers является приемлемым синтаксисом, поэтому это не должно быть проблемой. Когда он работал с DHCP, вы запускали ifconfigдля проверки имени интерфейса или предполагали, что это enp0s25? Также у вас есть auto enp0s25в верхней части вашего файла конфигурации? Если вы этого не сделаете, возможно, что интерфейс просто не запускается при загрузке.
Андрей

Пожалуйста, отредактируйте ваш вопрос и опубликуйте точное содержание вашего /etc/network/interfacesфайла. При редактировании сообщения выделите текст этого файла, затем нажмите {}ссылку кода в верхней части редактора сообщений, чтобы он правильно отформатировал текст, чтобы нам было легче читать его содержимое. Также выполните эту команду ip addressи выполните те же шаги {}(формат кода), что и вывод.
Л.Д. Джеймс

Ответы:


83

У меня была такая же проблема, и это было мое решение:

sudo nano /etc/network/interfaces

и вставьте (изменив для вашей сети) это под # The primary network interface:

auto enp0s25
iface enp0s25 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.4.4 8.8.8.8

Вы можете получить правильное имя интерфейса, используя команду Terminal ifconfig -aв Ubuntu 16.04 или ip address18.04+

Завершите работу вашей виртуальной машины, а затем !!! Зайдите в настройки сети и нажмите кнопку обновления MAC-адреса несколько раз :)

введите описание изображения здесь

и запустите свою виртуальную машину, и вы должны получить интернет!

ОБНОВЛЕНИЕ 20.02.2019

Для Ubuntu 18.04+ вам нужно отредактировать этот файл

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.55/24]
            gateway4: 192.168.0.1
            dhcp4: no
            nameservers:
              addresses: [1.1.1.1,8.8.8.8]
            optional: true
    version: 2

2
Большое спасибо, я ценю это. Кажется, работает сейчас, без проблем. Это очень солидно прямо сейчас!
TeeStar

В дополнение к dns-nameserversисправлению мне пришлось использовать это исправление: askubuntu.com/questions/574569/… Мой провайдер - monkeybrains.net.
BSalita

56

Установка статического IP-адреса, как указано выше в принятом ответе, здесь работает, но нужно сбросить старый параметр IP-адреса и затем перезапустить network.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Затем убедитесь, что это правильно:

ip add

2
Сброс был необходим, чтобы избежать присутствия старого адреса в интерфейсе (на основе ip addr). Перезапуск systemctl тоже работает, хотя ifdownи ifupпо интерфейсу будет работать более избирательно.
RichVel

2
спасибо @ Грант. добавление флеша сделало эту работу
Павел Мадей

3
В Ubuntu 16.04 и более новых флеш необходим!
Диего Дуарте

5

sudo vim /etc/network/interfaces

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

sudo ifdown eth0 && sudo ifup eth0


9
Привет @ lanni654321, может быть, вы должны отредактировать свой ответ и добавить несколько слов, кратко объясняя, что вы делаете и почему? я думаю, что это сделает ваш ответ еще более полезным, как вы думаете?
Цилидзи Мудау

5
# interfaces(5) file used by ifup(8) and ifdown(8)
# auto lo
# iface lo inet loopback
auto enp2s0 
iface enp2s0 inet static
    address 172.16.9.124
    netmask 255.255.240.0
    gateway 172.16.0.9
dns-nameservers 8.8.8.8

1
ifcace должно быть iface на 5-й линии
двуногая лошадь

@twoleggedhorse: Исправлена ​​опечатка в ответе, но мне пришлось добавить несколько #в первой строке, потому что вы не можете редактировать без как минимум 6 измененных символов, которые не являются
пробелами

3

У меня была та же проблема, и решение было "просто" ... для меня, по крайней мере.

auto ens160
iface ens160 inet static
address 172.31.0.164/22
netmask 255.255.252.0
gateway 172.31.0.2
network 172.31.0.0
broadcast 172.31.3.255
dns-nameservers 172.31.0.21 172.31.0.18

#Add internal route
up route add -net 172.16.168.0/21 gw 172.31.0.20 dev ens160

И создайте пустой файл с именем сетевого интерфейса в:

~$ touch /etc/network/interfaces.d/ens160

Оно работает...


2

У меня была та же проблема, и это было мое решение: удалить все пустые строки в конце файла /etc/network/interface.


0

Я обычно устанавливал статические IP-адреса на своих компьютерах с Ubuntu, а затем заметил, что могу просто назначить IP-адрес с помощью своего маршрутизатора. Это может быть самым простым решением. Просто войдите в свой маршрутизатор, найдите подключенные устройства и назначьте там IP-адрес.


0

Если ваш сервер показывает этот старый IP-адрес, а также новый назначенный IP-адрес, просто перезагрузите сервер. Он автоматически сбросит старый IP и сохранит новый.
И если вы не хотите перезагружать свой сервер, используйте эту команду:


sudo ip addr flush <your-interface-here>


0

Выполните эти простые команды, чтобы увидеть, настроены ли ваш сетевой интерфейс на запуск при загрузке / перезагрузке машины.

grep "auto" /etc/network/interfaces

Если в стандартный вывод не выводятся строки, откройте /etc/network/interfacesтекстовый редактор (vi, nano, sed) и, надеюсь, вы увидите нечто похожее на изображение ниже.

Файл по умолчанию / etc / network / interfaces

Очевидно, что если grepне вернуть какие-либо строки в окно терминала, формат ваших / etc / network / interfaces не может быть очень похожим. :-) Тем не менее, следуйте формату авто строк.

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

====================

Теперь на твоей машине .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Не знаете, какие имена интерфейсов доступны? Запустите эту команду.

ifconfig -a

Следующая команда вернет только имена сетевых интерфейсов.

ifconfig -a | grep encap | awk {'print $1'}

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.