TCP / IPv6 через туннель SSH

10

мне интересно, как туннелировать трафик tcp / ipv6 через туннель ssh / ipv4 (соединение ptp). Является ли это возможным? Как я могу этого достичь?


источник
Вы пытаетесь туннелировать только ipV6 трафик через туннель? Поскольку ваш SSH-туннель позволит вам без проблем использовать IPV5 или V6, предполагая, что сеть на обоих концах поддерживает его.
Сэм Коган
2
TCP через TCP обычно не очень хорошая идея: sites.inka.de/sites/bigred/devel/tcp-tcp.html TCP через TCP через TCP: это звучит не лучше
Reece45

Ответы:

15

Да, это возможно и не слишком сложно, но решение является очень неоптимальным, поскольку SSH работает по протоколу TCP и имеет значительную нагрузку.

Сервер должен иметь в своем файле конфигурации sshd_config:

PermitTunnel point-to-point

Затем вы должны быть root на обеих машинах. Вы подключаетесь к серверу, используя:

ssh -w any root@server

После подключения используйте команду ip linkв обеих системах, чтобы узнать, какое устройство tunN было создано в каждом из них, и используйте его в следующих командах. Обратите внимание, что я использую примеры локальных адресов сайтов, которые устарели, но хорошо для этого введения.

На сервере:

server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0

На клиенте:

client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0

Этого достаточно, чтобы вы могли пропинговать другую сторону через туннель, если нет правил брандмауэра. Следующим шагом является установка маршрутов через туннель (не забудьте net.ipv6.conf.default.forwarding = 1), а затем настройте MTU канала для получения оптимальной производительности.

server# sysctl net.ipv6.conf.all.forwarding=1

client# ip -6 route add default via fec0:1::1

Это позволит вашему клиенту пропинговать другие сети, к которым у сервера есть доступ, учитывая, что у целей есть маршруты обратно к вашему удаленному клиенту.

Вам также нужно исправить MTU канала, чтобы клиент не отправлял пакеты, которые сервер не сможет передать вперед. Это зависит от MTU канала IPv6 самого сервера. Не полагайтесь на обнаружение MTU пути, так как он не будет работать правильно через туннель SSH. Если есть сомнения, начните с низкого значения MTU, например 1280 (минимальный MTU разрешен для IPv6).

Жулиано
источник
1
Минимальный MTU, который поддерживает IPv6, составляет 1280 (в отличие от IPv4, который поддерживает минимальный MTU 576). Предупреждение: если вы установите MTU ниже 1280, ваши адреса IPv6 исчезнут и не смогут быть добавлены повторно, пока вы не перезапустите SSH!
Джереми Виссер
1
OS X не имеет ipкоманды, поэтому установите IP-адрес с помощью sudo ifconfig tun0 inet6 fec0:1::2/112 up и установите маршрут с помощью sudo route add -inet6 -mtu 1280 default fec0:1::1
larsr