1

Перешли провайдеры на днях, они только назначают DSlite-соединения. Я в порядке, подумал я. Дело в том, что я хочу получить доступ к некоторым своим материалам из-за пределов моей сети, что должно быть намного проще, так как теперь у меня есть собственный IPv6.

Моя новая главная проблема заключалась в том, что я не могу предположить, что это будет везде, где я бродю, поэтому большую часть времени я буду пытаться получить доступ с точки входа только для IPv4. Обнаружил, что $ socat был моим другом, так как я могу получить доступ к одному устройству с настоящим соединением с двумя стеками - поэтому получить доступ к моему IPv6 через соединение только по IPv4 так же просто, как запустить $ socat UDP4-LISTEN:sourceport,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport на машине с двойным стеком и затем подключаться к my-dualstack-hostna.me:sourceport извне.

Теперь $ netstat -tulpen | grep sourceport на машине с двумя стеками выдает только UDP4-прослушиватель - поэтому моя текущая проблема:

  • Для доступа через IPv6-соединение требуется, чтобы я подключился к my-ipv6-hostname-behind.cgn:targetport
  • Для доступа через IPv4-соединение требуется подключение к my-dualstack-hostna.me:sourceport
  • Доступ из DS(-lite) соединения позволяет мне использовать оба, но предпочтительно использовать прямой IPv6-маршрут

Поэтому было бы здорово иметь возможность использовать my-dualstack-hostna.me:sourceport для подключений как IPv4, так и IPv6, а не обновлять конфигурацию root при каждом перемещении моего ноутбука или телефона! Как заставить socat слушать оба? Должен быть способ! $ netstat -tulpen | grep ":22" на DS-машине показывает следующее:

tcp        0      0 0.0.0.0:22 […]
tcp6       0      0 :::22      […]

1 ответ1

4

У меня была та же проблема - вы можете решить ее, запустив два экземпляра socat, один прослушивая ipv4 и один прослушивая один и тот же порт ipv6, привязав каждый к соответствующему адресу, например так:

socat UDP4-LISTEN:sourceport,bind=<ipv4-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport

socat UDP6-LISTEN:sourceport,bind=<ipv6-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport

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