Làm cách nào để đặt IP tĩnh trong Ubuntu?


56

Tôi là người mới với Linux, có nhiều năm kinh nghiệm với máy chủ / máy tính để bàn Windows và đang gặp vấn đề khi đặt IP tĩnh. Tôi đang sử dụng một phương thức được sử dụng cho các phiên bản trước của Ubuntu, dường như không hoạt động với 16.04

Tôi đã sử dụng lệnh sudo nano /etc/network/interfacevà thêm vào như sau

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

Tôi đã khởi động lại hệ thống và Ethernet gần như đã chết, ping hoàn toàn không hoạt động. Tôi đã cố gắng sửa đổi /etc/NetworkManager/NetworkManager.confvà thực hiện các thay đổi sau

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

Với điều này, tôi có thể khiến Ethernet hoạt động không thường xuyên, tuy nhiên cuối cùng nó vẫn thất bại.

Tôi đã thử cấu hình này trên hai máy khác cộng với một máy ảo và tất cả đều có kết quả như nhau. Tôi có thể xác nhận các cài đặt này hoạt động tốt khi tôi cài đặt Windows trên bất kỳ máy nào trong số này. Cũng như khi tôi để DHCP tự động cấu hình, mọi thứ đều hoạt động tốt không có vấn đề gì.

Tôi nghĩ rằng tôi đang thiếu một cái gì đó ở đây, thiết lập một IP tĩnh không nên khó khăn chút nào.


điều duy nhất tôi nhận thấy và nó có thể chỉ là một lỗi đánh máy ở đây nhưng tôi sẽ thay đổi Dns-nameserversthành dns-nameserverscó lẽ sẽ không làm gì để giải quyết vấn đề này nhưng có thể ngăn chặn các vấn đề khác xảy ra
John Orion

1
Dns-nameervers là cú pháp có thể chấp nhận được vì vậy nó không phải là một vấn đề. Khi nó hoạt động với DHCP, bạn đã chạy ifconfigđể kiểm tra tên giao diện hay bạn cho rằng đó là enp0s25? Ngoài ra, bạn có một auto enp0s25ở đầu tập tin cấu hình của bạn? Nếu bạn không có khả năng thì giao diện sẽ không khởi động.
Andrew

Vui lòng chỉnh sửa câu hỏi của bạn và đăng nội dung chính xác của /etc/network/interfacestập tin của bạn . Trong khi chỉnh sửa tin nhắn của bạn, hãy tô sáng văn bản của tệp này, sau đó nhấp vào {}liên kết mã trên đầu trình chỉnh sửa thư để nó sẽ định dạng chính xác văn bản giúp chúng ta dễ đọc nội dung hơn. Cũng thực hiện lệnh này ip addressvà thực hiện các bước tương tự {}(định dạng mã) đầu ra đó.
LD James

Câu trả lời:


83

Tôi đã có cùng một vấn đề và đây là giải pháp của tôi:

sudo nano /etc/network/interfaces

và dán (thay đổi cho mạng của bạn) này dưới đây # 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

Bạn có thể nhận được tên giao diện chính xác bằng cách sử dụng lệnh Terminal trên ubfox ifconfig -a16.04 hoặc ip addresstrên 18.04+

Tắt máy ảo của bạn và sau đó !!! Chuyển đến cài đặt mạng và nhấp vào nút làm mới địa chỉ MAC một vài lần :)

nhập mô tả hình ảnh ở đây

và khởi động VM của bạn và bạn sẽ nhận được internet!

CẬP NHẬT 20.02.2019

Đối với Ubuntu 18.04 trở lên, bạn cần chỉnh sửa tệp này

/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
Rất cảm ơn tôi đánh giá cao nó. Nó dường như làm việc bây giờ, không có vấn đề. Nó rất vững chắc ngay bây giờ!
Teestar

Ngoài bản dns-nameserverssửa lỗi, tôi đã phải sử dụng bản sửa lỗi này: Askubfox.com/questions/574569/ ( ISP của tôi là khỉbrains.net .
BSalita

56

Đặt địa chỉ IP tĩnh như trên trong câu trả lời được chấp nhận ở đây hoạt động, nhưng người ta phải xóa cài đặt addr IP cũ và sau đó khởi động lại mạng.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Sau đó xác minh nó là chính xác:

ip add

2
Việc tuôn ra là cần thiết để tránh địa chỉ cũ hiện diện trên giao diện (dựa trên ip addr). Khởi động lại systemctl cũng hoạt động, mặc dù ifdownifuptrên giao diện sẽ hoạt động có chọn lọc hơn.
RichVel

2
thx @Grant. thêm tuôn ra đã làm việc này
Paweł Madej

3
Trong Ubuntu 16.04 và mới hơn là cần thiết!
Diego Duarte

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
Xin chào @ lanni654321, có lẽ bạn nên chỉnh sửa câu trả lời của mình và thêm một vài từ, giải thích ngắn gọn những gì bạn đang làm và tại sao? Tôi nghĩ rằng điều đó sẽ làm cho câu trả lời của bạn hữu ích hơn nữa, bạn nghĩ gì?
Tshilidzi Mudau

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 nên là iface trên dòng 5
twoleggedhorse

@twoleggedhorse: Đã sửa lỗi chính tả cho câu trả lời nhưng tôi phải thêm một vài #dòng trong dòng đầu tiên vì bạn không thể chỉnh sửa mà không có ít nhất 6 ký tự thay đổi không phải là khoảng trắng
Andrei Rînea

3

Tôi đã có cùng một vấn đề và giải pháp "ít nhất" chỉ đơn giản là ... đối với tôi.

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

Và, tạo một tệp trống với tên của giao diện mạng trong:

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

Nó hoạt động ...


2

Tôi đã có cùng một vấn đề và đây là giải pháp của tôi: Xóa tất cả các dòng trống ở cuối tệp /etc/network/interface.


0

Tôi đã từng đặt IP tĩnh trên các máy Ubuntu của mình và sau đó tôi nhận thấy rằng tôi chỉ có thể gán địa chỉ IP bằng bộ định tuyến của mình. Đây có thể là giải pháp đơn giản nhất. Chỉ cần đăng nhập vào bộ định tuyến của bạn, tìm các thiết bị đính kèm và gán địa chỉ IP ở đó.


0

Nếu máy chủ của bạn đang hiển thị IP cũ cũng như IP mới được chỉ định, chỉ cần khởi động lại máy chủ của bạn. Nó sẽ tự động xóa IP cũ và duy trì IP mới.
Và nếu bạn không muốn khởi động lại máy chủ của mình, hãy sử dụng lệnh này:


sudo ip addr flush <your-interface-here>


0

Chạy các lệnh đơn giản này để xem (các) giao diện mạng của bạn có được thiết lập khi máy khởi động / khởi động lại không.

grep "auto" /etc/network/interfaces

Nếu không có dòng nào được in ra đầu ra tiêu chuẩn, thì hãy mở /etc/network/interfacesbằng trình soạn thảo văn bản (vi, nano, sed) và hy vọng bạn sẽ thấy một cái gì đó tương tự như hình ảnh bên dưới.

Tệp mặc định / etc / mạng / giao diện

Rõ ràng, nếu grepkhông trả lại bất kỳ dòng nào cho cửa sổ đầu cuối, định dạng của giao diện / etc / mạng / của bạn hoàn toàn không giống nhau. :-) Tuy nhiên, hãy làm theo định dạng của các dòng tự động .

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

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

Bây giờ, trên máy của bạn .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Không biết tên giao diện nào khả dụng? Chạy lệnh này.

ifconfig -a

Lệnh sau sẽ chỉ trả về tên của các giao diện mạng.

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

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.