LINUX.ORG.RU
ФорумAdmin

Как использовать /31 подсеть для point-to-point?

 cidr


0

3

Во внешку выставил смотреть один ПК-роутер на линуксе, его задача быть тупым шлюзом на котором нет ничего, кроме раздачи интернетов на один единственный IP. Первый эшелон, так скажем.

192.168.0.1/30 — IP данного шлюза, 192.168.0.2/30 — IP второго эшелона, который интернеты будет получать и раздавать далее.

Попытался использовать /31 подсеть (всего 2 IP-адреса), но почему-то не взлетело.

В википедии написано: https://ru.wikipedia.org/wiki/Маска_подсети

Возможных узлов подсети меньше количества адресов на два: начальный адрес сети резервируется для идентификации подсети, последний адрес используется в качестве широковещательного адреса (возможны исключения в виде адресации в IPv4 сетей /32 и /31).

В случае с /30 понятно, используется 4 адреса и всё работает, но как воспользоваться этим «исключением» чтобы начать использовать /31?

На сервере: ip addr add 192.168.0.1/31 dev eth0

На клиенте: ip addr add 192.168.0.2/31 dev eth0

Не работают. Если сделать /30, тогда работает. Ради интереса попробовал на сервере сделать /30, а на клиенте «якобы» 192.168.0.100/24 — сервер пингуется, но в интернет уже не пускает. Достаточно ли это секурно?

Или это всё фигня? Как сделать секурный point-to-point чтобы только один хост мог войти в подсеть и получать интернеты?

★★★★★

Ответ на: комментарий от ugoday

Кто-нибудь может описать или ткнуть в доку, как работает этот pointopoint с /32? Я охудел, когда увидел в конфигах каких-то vps-хостеров, всегда думал что можно только минимум /30. А толкового описания, что там происходит, так и не нашёл.

anonymous
()
Ответ на: комментарий от anonymous

Просто экономят адреса.

Use of a /32 netmask (either set statically or provided over DHCP) is a common default configuration applied by cloud hosting providers for Linux virtual private servers.

Google Compute, Rackspace Cloud, CheapVPS, 1&1 and Strato do this for example.

The configuration has the benefit that it reduces East-West and broadcast traffic without requiring collateral, infrastructure IPs. It places certain requirements on the next hop «gateway» such as disablement of reverse path filtering to allow inter-VM traffic for devices on the same network segment or host to hairpin back out of the incoming interface.

A manual configuration for a Debian-flavour Linux host looks like this.

/etc/network/interfaces:

auto eth0
iface eth0 inet static
  address 123.123.82.130
  netmask 255.255.255.255
  broadcast 123.123.82.130
  up route add 123.123.92.171/32 dev eth0
  up route add default gw 123.123.92.171

Google Compute instances assign the same configuration over DHCP by providing a static host route to the off-subnet gateway using Option 121

Support for such a configuration is dependant on a distribution’s network scripts.

There is widespread support for this (e.g. NetworkManager) and such support is demonstrated by the following commit to the ubiquitous Dracut initramfs build tool:

https://github.com/haraldh/dracut/commit/99ccbc30dff9fa51dd3187dc10f8f632e5e54e4b

rubic
()
Ответ на: комментарий от anonymous

А в чём проблема? У вас есть интерфейс с всё равно каким адресом и маршрут — всё что нужно, отправлять на этот адрес. С другого конца аналогично. Там ещё NAT может рядом пробегать, но это уже всё равно какую подсетку для точки-точки вы используете.

ugoday ★★★★★
()

Смысла в этом нет.

Делается класическая сеть исходя из числа клиентов. Потеря - 3 адреса (сеть, broadcast и gw).

Фильтрация между клиентами делается на другом уровне (если она вообще нужна).

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

типа isp: 10.0.0.1/30, клиент: 10.0.0.2/30 + public_ip

Единственная проблема - прописать dgw с явным указание src с публичным адресом.

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

vel ★★★★★
()

Ваши ip-адреса из разных подсетей. Хотите подобного извращения, прописывайте маршруты с опцией «onlink».

mky ★★★★★
()

На сервере: ip addr add 192.168.0.1/31 dev eth0
На клиенте: ip addr add 192.168.0.2/31 dev eth0
Не работают

И не будут:

pinkbyte@oas1 ~ $ sipcalc 192.168.0.1/31 | grep range
Network range           - 192.168.0.0 - 192.168.0.1
pinkbyte@oas1 ~ $ sipcalc 192.168.0.2/31 | grep range
Network range           - 192.168.0.2 - 192.168.0.3

TL;DR: 192.168.0.0/31<-> 192.168.0.1/31 или 192.168.0.2/31 <-> 192.168.0.3/31 - будут работать, если железо поддерживает работу с /31.

Но смысла в этом, как уже сказали особо нет. /31 нужно в основном для экономии публичных адресов на межпровайдерских стыках

Как сделать секурный point-to-point чтобы только один хост мог войти в подсеть и получать интернеты?

Файрволом. Всё остальное - от лукавого. Лично я наоборот на подконтрольных мне стыковочных линках чаще делаю /29 вместо /30 - чтобы можно было воткнуться чем-нибудь еще для отладки.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Ответ на: комментарий от anonymous

https://tools.ietf.org/html/rfc3021 - это RFC по /31

Про /32 линки уже рассказали - ничего сложного там в принципе нет. Но при их использовании всегда нужно помнить что далеко не все оборудование умеет в такое(как и с /31). А если и умеет - то может настраиваться совсем не так, как традиционная сеть. Например /31-подсеть на микротиках настраивается с маской /32 и выставлением другого конца линка в качестве адреса сети.

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.