2

В брандмауэре pf раздел man-страницы pf.conf указывает, что "protocol" - это что-то из /etc/protocols , и что он отличается от "address family" ("<af>"), которое является inet или inet6. В свою очередь /etc/protocols содержит протокол "IPv6", а в приложениях, основанных на BSD, таких как брандмауэр pfSense, IPv6 иногда указывается как протокол в отличие от семейства IP (например, в определениях правил NAT).

Но IPv6 не является протоколом в том смысле, как это делают tcp/udp/icmp. Существует четкое логическое и функциональное различие между IPv4/IPv6 как двумя семействами IP-адресов (базовый транспорт) и многими протоколами, транспортируемыми в IPv4/IPv6.

(Если бы это было тогда
nat on em1 inet proto ipv6 from 1.2.3.4 to any -> 5.6.7.8 port 2000:2999 и
block drop in inet proto ipv6 from 1.2.3.4 to any
будет значимым и сопоставимым с
nat on em1 inet proto tcp from 1.2.3.4 to any -> 5.6.7.8 port 2000:2999 и
block drop in inet proto tcp from 1.2.3.4 to any )

Когда IPv6 будет иметь смысл или использоваться в поле "протокол" в правиле PF, в отличие от указания его в качестве семейства адресов? (И может ли NAT почти всегда использоваться только для IPv4, иметь какое-либо отношение к нему?)

1 ответ1

2

IPv6 - это протокол в том смысле, что TCP/UDP/ICMP. Несмотря на то, что они работают на разных уровнях, ничто не мешает вам размещать IP поверх IP, чтобы получить простой VPN-подобный туннель. (Сравните это с IP внутри GRE внутри IP.) По этой причине как IPv4, так и IPv6 имеют присвоения номеров протоколов - вложенный пакет IPv4 - это "протокол 4", IPv6 - "протокол 41".

Более конкретно, IPv6-over-IPv4 также известен как "6in4" или "proto41", общий механизм перехода, используемый для получения подключения IPv6 от поставщика туннелей через сеть только для IPv4. (Hurricane Electric очень популярен; также есть автоматическое "6to4", использующее реле anycast.)

pfSense имеет документацию для настройки такого туннеля - во FreeBSD это будет сделано с использованием интерфейса gif(4) ; в Linux, используя sit или ipip. Туннельный провайдер имеет идентичную (но зеркальную) конфигурацию, которая распаковывает внутренний IP-пакет и перенаправляет его в свою собственную сеть IPv6.

Это не самый идеальный туннельный метод по сравнению, например, с GRE, L2TP (только один туннель на внешнюю пару src/dst); или FOU, GUE (многие домашние маршрутизаторы не позволяют переадресацию портов на то, что не является TCP или UDP); или специальные протоколы VPN (без аутентификации, без шифрования). Это, однако, самый простой из возможных туннелей с минимальными издержками (всего 20 байтов).


Обязательная ссылка "Начало": для IPv4 требуется минимальный MTU в 68 байтов, а для IPv6 - 1280 байтов. При значении Ethernet MTU по умолчанию, равном 1500, максимальное количество стеков туннелей IPv4 может составлять ~ 70, а также ~ 5 уровней для IPv6.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .