Якщо у вас IPv6, вам навіть не потрібно переадресація портів! Просто отримайте свою постійну IPv6-адресу (виходячи з MAC-адреси, тому гарантовано будете залишатися такою ж, якщо ваш Інтернет-провайдер не знає, як працює IPv6) і використовуйте це для тунелю. Оскільки ваша IPv6-адреса є загальнодоступною та дозволяє світові щоб отримати доступ до вас, не проходячи локальний NAT, вам не потрібно турбуватися, щоб активувати переадресацію портів куди завгодно. Це буде "просто працювати".
Зауважте, що IPv6 все ще не підтримується глобально, і для вашого домашнього підключення до Інтернету та для віддаленого Інтернету потрібно мати повноцінний IPv6 для цього.
Однак якщо ти, як і більшість людей, і маєш лише IPv4, є спосіб! Деякі маршрутизатори дозволяють пересилати конкретні порти джерела до конкретних портів призначення, наприклад:
У цьому прикладі порт 22
передаються безпосередньо до моєї машині sheepdog
, в той час як порт 292
перенаправляються на порт 22
на coyote
.
Нарешті, якщо ваш маршрутизатор не має цієї функції, ви можете просто змінити порт, оскільки SSH не обмежується лише запуском на порт 22
. Ви можете встановити його на все, що завгодно (це не використовується).
У /etc/ssh/sshd_config
(вам потрібно редагувати root, отже sudo nano /etc/ssh/sshd_config
), у верхній частині файлу є рядок:
# What ports, IPs and protocols we listen for
Port 22
Змініть це на все, що завгодно:
# What ports, IPs and protocols we listen for
Port 2992
Перезавантажте SSH-сервер за допомогою sudo service ssh restart
та переадресуйте порт на маршрутизаторі.
Однак, для цього випадку використання, я б розглядав, чи тунелі SSH - це правильна річ. Можливо, вам слід налаштувати виділений сервер VPN у домашній мережі? Це дозволить отримати доступ до всієї домашньої мережі з будь-якого місця, за умови наявності належних даних безпеки, необхідних VPN. Крім того, є трохи менше накладних витрат з VPN; вам зазвичай потрібно переслати лише один порт для однієї машини.