все мои устройства имеют адреса IPv4, IPv6 LL, IPv6 ULA и IPv6 GUA, такие как:
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 88:b1:11:ed:21:c8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.22/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp1s0
valid_lft 863780sec preferred_lft 863780sec
inet6 fd00::xxxx:xxxx:xxxx:xxxx/64 scope global dynamic noprefixroute
valid_lft 6985sec preferred_lft 3385sec
inet6 2003:d4:4f1f:9500:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic noprefixroute
valid_lft 6985sec preferred_lft 1585sec
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Некоторые более сложные устройства (поставщики услуг) имеют брандмауэр iptables, установленный с:
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Когда я сейчас пытаюсь связаться с устройством a с устройства b через DNS-имя, иногда используется GUA IPv6, а иногда ULA. Мои брандмауэры разрешают некоторые порты (например, SSH) только для соединений из подсети ULA. Поэтому я хочу принудительно использовать ULA в своей подсети.
Это правильный путь? Как я могу решить эту проблему, не отключая мои брандмауэры и не вводя IP-адрес назначения?
Спасибо
EDIT 20181118: RFC 6724 гласит: По умолчанию глобальные адреса IPv6 предпочтительнее, чем назначения ULA, поскольку произвольный ULA не всегда доступен (благодаря Рону Мопину). Так что я, очевидно, что-то не так сделал со своей структурой сети. Есть ли другой способ фильтрации трафика в моей подсети с помощью iptables? Глобальный префикс IPv6 является динамическим, поэтому я не могу использовать его в своих статических iptables для определения, поступают ли пакеты из моей подсети.