Làm cách nào để thiết lập địa chỉ IP tĩnh và tại sao
Để ý! Tôi không nói về các cách khác để thiết lập mạng như với NetworkManager. Bất kỳ thiết bị được đề cập trong /etc/network/interfaces
không được chạm vào bởi NM
Để có thể giao tiếp qua mạng IP (IPv4 và IPv6), máy tính phải biết địa chỉ IP đó có địa chỉ IP nào. Vì vậy, address
chỉ thị là cần thiết để nói với máy tính rằng.
Khi máy tính muốn nói chuyện với máy tính khác, nó sử dụng địa chỉ IP của máy tính đó để kiểm tra xem máy tính đó có nằm trong cùng một mạng, LAN không. Nếu vậy, máy tính có thể giao tiếp trực tiếp với máy tính khác.
Vậy làm thế nào để máy tính biết khi nào nó đang giao tiếp với một máy tính trên cùng một mạng LAN? Bằng cách sử dụng các mạng netmask
, trong đó phần mạng của địa chỉ được đặt thành mạng và phần máy chủ được đặt thành số không. Vì vậy, bằng cách thực hiện thao tác bitwise AND giữa mỗi bit trong địa chỉ IP và netmask, chúng ta sẽ nhận được địa chỉ mạng của địa chỉ IP, trong đó phần máy chủ bằng không. Vì vậy, nếu chúng ta thực hiện điều này trên địa chỉ IP của máy tính và địa chỉ IP của các máy tính khác, chúng ta sẽ nhận được từng địa chỉ mạng .. Nếu chúng bằng nhau, điều đó có nghĩa là các máy tính nằm trong cùng một mạng và có thể nói chuyện trực tiếp với nhau.
Nếu các địa chỉ mạng không bằng nhau, chúng nằm trên mạng LAN khác nhau và không thể liên lạc trực tiếp với nhau. Sau đó, máy tính cần sử dụng một máy tính đặc biệt được kết nối với các mạng LAN khác. Máy tính đó là một bộ định tuyến (cũng có thể có tường lửa và NAT). Vì vậy, khi máy tính muốn nói chuyện với các máy tính khác ngoài mạng LAN, nó cần biết địa chỉ của máy tính đó được đặt bằng lệnh gateway
. Nếu một giao diện khác đã đặt gateway
giá trị, bạn không và không nên đặt một lệnh cổng khác cho giao diện này. Lệnh gateway
này đặt tuyến mặc định cho máy tính, vì vậy bạn chỉ cần một tuyến cho IPv4 và chỉ một tuyến cho IPv6 trên mỗi máy. Địa chỉ mạng này có thể được thiết lập thủ công với network
chỉ thị.
Đôi khi máy tính muốn liên lạc với tất cả các máy tính trong mạng LAN và nó sử dụng địa chỉ quảng bá. Địa chỉ này được nghe bởi tất cả các máy tính trong cùng một mạng LAN. Điều này về cơ bản giống như địa chỉ mạng, ngoại trừ phần máy chủ không phải là tất cả số không và thay vào đó là tất cả. Địa chỉ quảng bá này được đặt theo chỉ thị broadcast
trong giao diện.
network
Địa chỉ giao diện chỉ cần được tính một lần và thường được tính chính xác từ đó address
và các netmask
chỉ thị. Tương tự với broadcast
địa chỉ. Vì vậy, bạn không cần phải thiết lập chúng. Trong thực tế nếu bạn đặt một hoặc cả hai giá trị sai, bạn có thể mất kết nối với internet và các máy tính khác trong mạng LAN của mình. Vì vậy, trừ khi bạn có một số giá trị lạ trên chúng, hãy để máy tính tính toán chúng cho bạn.
Vì vậy, một cài đặt tĩnh tối thiểu, hoặc khổ thơ, /etc/network/interfaces
có thể trông giống như thế này cho thiết bị eth1
trong một mạng riêng:
iface eth1 static inet
address 192.168.44.10
netmask 255.255.255.0
gateway 192.168.44.1
Cách giải quyết tên hoạt động và cách nó được gắn với DNS.
Tên miền được sử dụng để chuyển đổi giữa người dễ đọc và nhớ tên miền và máy tính không dễ nhớ địa chỉ IP, đã đề cập ở trên. Điều này được gọi là Giải quyết tên .
Điều này thường được kiểm soát bởi các tập tin /etc/nsswitc.conf
và dòng bắt đầu với hosts:
. Nếu bạn yêu cầu máy tính kết nối với máy tính my.example.com
, nó sẽ xem xét tệp này và cố gắng giải quyết địa chỉ IP từ tên my.example.com
. Tệp này không thực sự trả lời câu hỏi "IP nào my.example.com có", nó chỉ cho máy tính biết nơi nó có thể tìm thấy câu trả lời.
Thông thường, nó sẽ thử /etc/hosts
tệp đầu tiên cho các tên cục bộ tĩnh, sau đó avahi mDNS
cho các tên cục bộ động và sau đó là một bộ giải mã tên miền DNS để lấy tên từ internet.
Nếu một vài trong số này chậm trả lời câu hỏi của bạn, có vẻ như máy tính bị kẹt trong một thời gian. Vì vậy, nếu bạn nhận được điều đó, kiểm tra tên giải quyết đầu tiên.
Vì vậy, thêm địa chỉ tĩnh, bạn chỉ có thể thêm nó vào /etc/hosts
tập tin của bạn . Nhân tiện, nếu bạn có một địa chỉ tĩnh, có lẽ bạn nên thay đổi địa chỉ IP ở đó cho máy của bạn thành địa chỉ IP của bạn chứ không phải mặc định 127.0.1.1
(trong mạng localnet có localhost, 127.0.0.1
). Điều đó chỉ hoạt động tốt cho khách hàng và không cho máy chủ.
Các địa chỉ động bạn nhận được từ các máy Linux có avahi
gói và từ các máy của Apple (và MS Windows với iTunes?). Điều đó được xử lý bằng "ma thuật" và bạn sẽ không cần phải sửa nó.
DNS được sử dụng để truy cập internet và bạn cần thông báo cho máy tính biết các máy chủ DNS mà bạn muốn sử dụng là gì, địa chỉ IP nào sẽ được sử dụng và tên miền DNS mặc định của bạn là gì.
Điều này được thực hiện trong tệp /etc/resolv.conf
và có thể được thiết lập tĩnh. Điều này không hoạt động tốt trong thế giới không tĩnh của chúng tôi, vì vậy thông thường bạn có một gói được gọi là resolvconf
cài đặt. Điều này cho phép bạn thiết lập các cài đặt này trong /e/n/interfaces
tệp.
Vì vậy, nếu chúng tôi giả định rằng chúng tôi muốn thêm một trong các máy chủ DNS của Googles và máy chủ DNS 8.8.8.8
của ISP 192.0.2.1
và tên miền của bạn my.example.org
làm mặc định, bạn chỉ cần chỉnh sửa /etc/network/interfaces
tệp và thêm hai dòng này vào khổ thơ cho thiết bị tĩnh.
dns-nameservers 8.8.8.8 192.0.2.10
dns-search my.example.org
Bạn cũng có thể nhận thấy rằng trình phân giải DNS sẽ chỉ sử dụng tối đa ba máy chủ DNS. Xin vui lòng tìm kiếm trong trang này man
của resolv.conf
. Như thường, bạn có thể sử dụng lệnh man nsswitch.conf
, man resolv.conf
và man resolvconf
để biết thêm thông tin.
Cũng lưu ý rằng tôi sử dụng domain example.com và example.org và mạng IP 192.0.2.0/24 cho máy chủ DNS ví dụ ISP. Đây là những định nghĩa rõ ràng được sử dụng trong các ví dụ. Xem http://example.com/ hoặc http://tools.ietf.org/html/rfc2606 và rfc5735
Làm thế nào để bạn kiểm tra xem nó hoạt động?
Bạn có thể làm điều đó theo nhiều cách, nhưng tôi thường sử dụng
getent hosts my.test.com
để kiểm tra toàn bộ thiết lập cho độ phân giải tên. Nếu tôi chỉ muốn kiểm tra xem DNS có hoạt động không, tôi sử dụng một trong các lệnh sau:
host my.test.com
dig my.test.com
Nhưng hãy nhớ rằng những người đó chỉ kiểm tra DNS thông qua các cài đặt trong /etc/resolv.conf
tệp chứ không phải /etc/nsswitch.conf
phần. Nó có thể là những gì bạn muốn, hoặc không.