все мои устройства имеют адреса 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 для определения, поступают ли пакеты из моей подсети.
https://superuser.com/questions/436574/ipv4-vs-ipv6-priority-in-windows-7