Як встановити статичний 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ймовірно , не збирається нічого робити , щоб вирішити цю проблему , але може зупинити інші питання від траплятися
Джон Orion

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

Відредагуйте своє запитання та опублікуйте точний вміст вашого /etc/network/interfacesфайлу. Під час редагування повідомлення виділіть текст цього файлу, а потім натисніть на {}посилання коду у верхній частині редактора повідомлень, щоб він правильно форматував текст, що полегшило нам читання вмісту. Також виконайте цю команду ip addressі виконайте ті ж дії, що і {}(формат коду), що виводиться.
LD James

Відповіді:


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-адреси кілька разів :)

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

і запустити свій VM, і ви повинні отримати Інтернет!

ОНОВЛЕННЯ 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-адреса та перезапустити мережу.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Потім перевірте, чи правильно це:

ip add

2
Флеш був необхідний, щоб уникнути наявності старої адреси в інтерфейсі (на основі ip addr). Перезапуск systemctl теж працює, хоча ifdownі ifupв інтерфейсі буде працювати більш вибірково.
RichVel

2
thx @Grant. додавання флеш зробило цю роботу
Paweł Madej

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 / інтерфейсів взагалі не може бути дуже подібним. :-) Однак дотримуйтесь формат автоматичних ліній.

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.