<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Привет,</p>
<p>а кто пользуется MacOS, подскажите такую штуку. Мне для
экспериментальных целей понадобилось и я сделал себе IPv6 VPN (на
той стороне - стронгсван, если это хоть какое-то значение):<br>
</p>
<pre>en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::1ca5:1930:866b:888c%en0 prefixlen 64 secured scopeid 0x6
inet 192.0.2.8 netmask 0xffffff00 broadcast 192.0.2.255
nd6 options=201<PERFORMNUD,DAD>
status: active
[ ... ]
ipsec0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
inet6 fe80::8e85:90ff:fe5c:77eb%ipsec0 prefixlen 64 scopeid 0x10
inet6 2a01:4f8:c010:xxxx:1:1:0:1 prefixlen 64
nd6 options=201<PERFORMNUD,DAD>
$ netstat -rn |grep -i default
default 192.0.2.1 UGScIg en0
default 2a01:4f8:c010:xxxx:: UGcg ipsec0
</pre>
<p>то есть, грубо говоря: я хотел, чтобы IPv4 работал как обычно, а
IPv6 был доступен через туннель, где уже происходят мои дальнейшие
сомнительные игрища ;-)<br>
</p>
<p>Итог - IPv6 работает, а вот IPv4 перестаёт:</p>
<pre>$ ping6 google.com
PING6(56=40+8+8 bytes) 2a01:4f8:c010:xxxx:1:1:0:1 --> 2a00:1450:4001:80e::200e
16 bytes from 2a00:1450:4001:80e::200e, icmp_seq=0 hlim=115 time=36.116 ms
16 bytes from 2a00:1450:4001:80e::200e, icmp_seq=1 hlim=115 time=37.832 ms
$ ping google.com
PING google.com (142.250.185.78): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
</pre>
<p>то есть при появлении default@ipv6 макось (Monterey) перестаёт
понимать, куда теперь слать ipv4 пакеты. При этом сам по себе шлюз
пингуется, т.е. connected route сохраняется. Вопрос тут даже не в
приоритетности - это ж разные inet families и <i>мне казалось</i>,
что наличие собственного дефолта в каждом из них не должно мешать
другому - то есть ping6 пользуется inet6, а ping - inet и всё
должно работать. Но нет. </p>
<p>Это баг или фича или конфигурабельное поведение? Куда смотреть?</p>
<p>P.S. если макось получает dual-stack с одного интерфейса - то всё
работает:</p>
<pre>ipsec0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
inet <a class="anchor-url" href="https://10.0.0.1" target="_blank" rel="noopener noreferrer">10.0.0.1</a> --> <a class="anchor-url" href="https://10.0.0.1" target="_blank" rel="noopener noreferrer">10.0.0.1</a> netmask 0xffffffff
inet6 fe80::8e85:90ff:fe5c:77eb%ipsec0 prefixlen 64 scopeid 0x10
inet6 2a01:4f8:c010:xxxx:1:1:0:1 prefixlen 64
nd6 options=201<PERFORMNUD,DAD>
=====
$ ping6 -c2 <a class="anchor-url" href="https://google.com" target="_blank" rel="noopener noreferrer">google.com</a>
PING6(56=40+8+8 bytes) 2a01:4f8:c010:xxxx:1:1:0:1 --> 2a00:1450:4001:827::200e
16 bytes from 2a00:1450:4001:827::200e, icmp_seq=0 hlim=115 time=35.949 ms
16 bytes from 2a00:1450:4001:827::200e, icmp_seq=1 hlim=115 time=37.976 ms
$ ping -c2 <a class="anchor-url" href="https://google.com" target="_blank" rel="noopener noreferrer">google.com</a>
PING <a class="anchor-url" href="https://google.com" target="_blank" rel="noopener noreferrer">google.com</a> (<a class="anchor-url" href="https://142.250.186.46" target="_blank" rel="noopener noreferrer">142.250.186.46</a>): 56 data bytes
64 bytes from <a class="anchor-url" href="https://142.250.186.46" target="_blank" rel="noopener noreferrer">142.250.186.46</a>: icmp_seq=0 ttl=115 time=36.058 ms
64 bytes from <a class="anchor-url" href="https://142.250.186.46" target="_blank" rel="noopener noreferrer">142.250.186.46</a>: icmp_seq=1 ttl=115 time=92.463 ms
</pre>
<p>Отака от фігня, малята.<br>
</p>
<p>Спасибо.<br>
</p>
<pre class="moz-signature" cols="72">--
Volodymyr Litovka
"Vision without Execution is Hallucination." -- Thomas Edison</pre>
</body>
</html>