Как я могу получить сетевую маску от IP-адреса?

Тот режим не предоставляет полностью функциональный терминал подоболочке. Использовать M-x ansi-term вместо этого.

9
18.03.2012, 23:27
4 ответа

Это не возможно. Если бы было возможно, что не было бы никакой причины иметь сетевую маску вообще, поскольку это могло быть автоматически определено.

Сетевая маска используется для определения диапазона IP, который 'сеть' запускает и останавливается в. Этот диапазон произволен.

Например, с IP-адресом 192.168.0.140:
С сетевой маской 255.255.255.0 (/24 в cidr нотации), диапазон IP был бы 192.168.0.1 - 192.168.0.254.
С сетевой маской 255.255.255.128 (/25 в cidr нотации), диапазон IP был бы 192.168.0.129 - 192.168.0.254.

14
27.01.2020, 20:05

Вы не можете в большинстве случаев из-за бесклассовых сетей. Данный адрес IPv4 может иметь 30 различных сетевых масок.

3
27.01.2020, 20:05
  • 1
    В этом случае в современных системах можно ли сделать это? –  Karlson 18.03.2012, 20:39
  • 2
    я не полностью понимаю вопроса, но в основном всех систем и устройств в наше время, использует CIDR. –  SquareRootOfTwentyThree 18.03.2012, 20:45
  • 3
    @Karlson: Как Patrick сказал, нет никакого способа автоматически определить, когда у Вас есть случай, который попадает в исключение к этому правилу. Можно посмотреть на первый октет адреса и вслепую предположить от его главных немногих битов, что это - часть класса A, B, C... или безотносительно сети, но Вы не можете знать для того, что адрес имеет тот класс, следовательно что Вы знаете сетевую маску. На самом деле, с некоторыми адресами, это - умная ставка, что "класс" старого стиля адреса не важен: адреса, начинающиеся 10, почти никогда не являются классом A (/8), потому что они почти всегда разделяются на подсети. –  Warren Young 18.03.2012, 20:46
  • 4
    @SquareRootOfTwentyThree, которым состоит в том вопрос, существует ли путь на основе IP целевой системы для определения используемой сетевой маски. –  Karlson 18.03.2012, 20:49
  • 5
    @WarrenYoung я знаю о классах IP-адресов, но можно предположить маску IP класса, имеет (и я предполагаю здесь), более чем 99%-я вероятность того, чтобы быть неправильным. –  Karlson 18.03.2012, 20:52

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

Таким образом, если Вы знаете все (= в настоящее время или в используемом будущем) IP-адреса в той же подсети, можно создать сетевую маску, которая содержит их всех. Например, если 192.168.2.4 и 192.168.2.253 должен быть в той же подсети, сетевая маска 255.255.255.0 (равняется диапазону IP 192.168.2.0-255 или в cidr нотации 192.168.2.0/24), работы.

1
27.01.2020, 20:05
  • 1
    @WarrenYoung спасибо за указание на это. Я разъяснил свой ответ. –  jofel 18.03.2012, 20:57
  • 2
    Извините, но "сетевая маска 255.255.255.0" означает не 192.168.2.1-255, но 192.168.2.0-255 (если мы будем включать сеть и широковещательно передавать), или 192.168.2.1-254 (если бы мы не будем включать), –  Lazy Badger 19.03.2012, 06:36

Хотя вы не можете определить маску сети по ip-адресу напрямую в centos 7, вы можете набрать "ip ad", который вернет ip-адрес с соответствующим номером подсети.

-bash-4.2$ ip ad 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

Номер подсети также хранится в следующем файле

/etc/sysconfig/network-scripts/ifcfg-eth0 (где eth0 зависит от типа вашей сетевой карты)

Ищите параметр PREFIX. Число, которое она дает, является маской подсети

например, PREFIX=24

Если в вышеуказанном файле нет числа PREFIX, то в настройках сети вашего сервера по умолчанию будет стоять маска подсети 8, что опять же будет показано командой "ip ad".

Если вы хотите изменить номер PREFIX, не забудьте перезапустить сетевую службу с помощью systemctl restart network.

2
27.01.2020, 20:05

Теги

Похожие вопросы