Làm thế nào tôi có thể lấy netmask từ một địa chỉ IP?


Câu trả lời:


14

Điều này là không thể. Nếu có thể, sẽ không có lý do gì để có một netmask vì nó có thể được xác định tự động.

Netmask được sử dụng để chỉ định dải IP mà 'mạng' bắt đầu và dừng tại. Phạm vi này là tùy ý.

Ví dụ: với địa chỉ IP 192.168.0.140:
Với netmask của 255.255.255.0( /24theo ký hiệu cidr), phạm vi IP sẽ là 192.168.0.1 - 192.168.0.254.
Với một mặt nạ của 255.255.255.128( /25theo ký hiệu cidr), dải IP sẽ là 192.168.0.129 - 192.168.0.254.


3

Bạn không thể trong hầu hết các trường hợp, vì các mạng không có lớp . Một địa chỉ IPv4 nhất định có thể có 30 netmasks khác nhau.


Trong trường hợp nào trong các hệ thống hiện đại, bạn có thể làm điều này?
Karlson

Tôi không hoàn toàn hiểu câu hỏi, nhưng về cơ bản tất cả các hệ thống và thiết bị hiện nay đều sử dụng CIDR.
SquareRootOfTovenThree

@Karlson: Như Patrick đã nói, không có cách nào để tự động xác định khi nào bạn gặp trường hợp rơi vào trường hợp ngoại lệ đối với quy tắc này. Bạn có thể nhìn vào octet đầu tiên của địa chỉ và đoán một cách mù quáng từ một vài bit hàng đầu của nó rằng nó là một phần của lớp A, B, C ... hoặc bất kỳ mạng nào nhưng bạn không thể biết thực tế rằng địa chỉ đó là của lớp đó , do đó bạn biết mặt nạ mạng. Trên thực tế, với một số địa chỉ, đặt cược thông minh rằng "lớp" địa chỉ kiểu cũ là không liên quan: các địa chỉ bắt đầu bằng 10 hầu như không bao giờ là loại A (/ 8) vì chúng hầu như luôn được cho thuê lại.
Warren Young

@SapesRootOfTovenThree Câu hỏi đặt ra là có hay không có cách dựa trên IP của hệ thống đích để xác định netmask được sử dụng.
Karlson

@WarrenYoung Tôi biết về các lớp địa chỉ IP nhưng bạn có thể đoán mặt nạ IP của lớp có (và tôi đoán ở đây) xác suất sai hơn 99%.
Karlson

2

Mặc dù bạn không thể xác định netmask từ địa chỉ IP trực tiếp trong centos 7, bạn có thể nhập "quảng cáo ip" sẽ trả về địa chỉ ip với số mạng con tương ứng.

-bash-4.2 $ ip quảng cáo 1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

   valid_lft forever preferred_lft forever

inet6 ::1/128 scope host 

   valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:16:3e:77:ca:e9 brd ff:ff:ff:ff:ff:ff

**inet 10.1.0.11/24** brd 10.1.0.255 scope global eth0

   valid_lft forever preferred_lft forever

inet6 fe80::216:3eff:fe77:cae9/64 scope link 

   valid_lft forever preferred_lft forever

Số mạng con cũng được lưu trong tệp sau

/ etc / sysconfig / network-scripts / ifcfg-eth0 (trong đó eth0 phụ thuộc vào loại thẻ mạng của bạn)

Tìm cài đặt PREFIX. Số nó cung cấp là mặt nạ mạng con

ví dụ: PREFIX = 24

Nếu không có số PREFIX trong tệp trên thì cài đặt mạng máy chủ của bạn sẽ mặc định là mặt nạ mạng con 8, một lần nữa sẽ được hiển thị từ lệnh "ip ad" của bạn.

Nếu bạn muốn thay đổi số PREFIX, hãy nhớ khởi động lại dịch vụ mạng bằng cách sử dụng mạng khởi động lại systemctl.


1

netmask chủ yếu được sử dụng để phân biệt các địa chỉ cục bộ trong cùng một mạng con với các địa chỉ bên ngoài chỉ có thể truy cập qua một cổng.

Vì vậy, nếu bạn biết tất cả (= hiện tại hoặc trong tương lai được sử dụng) các địa chỉ IP trong cùng một mạng con, bạn có thể tạo một netmask chứa tất cả chúng. Ví dụ: nếu 192.168.2.4 và 192.168.2.253 phải nằm trong cùng một mạng con, netmask 255.255.255.0 (bằng với dải ip 192.168.2.0-255 hoặc trong ký hiệu cidr 192.168.2.0/24).


@WarrenYoung Cảm ơn bạn đã chỉ ra điều này. Tôi làm rõ câu trả lời của mình.
jofel

Xin lỗi, nhưng "netmask 255.255.255.0" có nghĩa là không 192.168.2.1-255, nhưng 192.168.2.0-255 (nếu chúng tôi sẽ bao gồm mạng và phát sóng) hoặc 192.168.2.1-254 (nếu chúng ta sẽ không bao gồm)
Lazy Badger
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.