Настроить
Дома у меня есть маленькая Raspberry Pi 3, которая запускает сервисы, которые доступны в Интернете. Например, это работает HTTP-сервер. Я буду называть этот сервер raspberry . Я могу управлять raspberry удаленно через SSH: я открыл порт 22 на своем маршрутизаторе дома, и поэтому трафик на мой публичный IP-адрес для этого порта перенаправляется в raspberry . Все идет нормально.
Архитектура raspberry - это arm64 и она работает на FreeBSD что делает невозможным (по-видимому, я пытался взломать, но не играли в кости), чтобы я запускал на ней игровой сервер (UrbanTerror 4.3).
У меня также есть другая машина, которая является ThinkPad (позже: thinkpad под управлением операционной системы OpenBSD и имеет архитектуру amd64 которая делает на самом деле позволит мне запустить нужный сервер. С thinkpad я могу получить доступ к raspberry с помощью SSH.
Вопрос
Я сейчас не дома, а в другой сети, фактически за границей. У меня сейчас непреодолимое желание разместить свой сервер, но я не смог сделать это на raspberry , как я уже сказал.
Можно ли каким-то образом запустить сервер на thinkpad и туннелировать весь трафик через raspberry (так как я могу выставить это в Интернет, тогда как здесь, за границей, у меня нет прав администратора на маршрутизатор)?
По сути, я хочу запустить сервер на thinkpad как если бы я запускал его на raspberry с точки зрения работы в сети. То есть сервер будет отображаться в браузерах серверов, и игроки смогут подключаться: трафик будет поступать в raspberry через порт, например, 27900 и он будет отправляться через интернет через SSH на thinkpad .
PS Я понимаю, что это может привести к снижению производительности из-за ретрансляции трафика через SSH, но я все еще хотел бы попробовать.
Заранее спасибо и простите за длинный пост!
РЕДАКТИРОВАТЬ 2018-12-14: вот что я уже пробовал
Поэтому мне нужен обратный SSH-туннель для этого. Я создал туннель из thinkpad так
ssh -N -R :27960:localhost:27960 <raspberry's public IP>
Туннель создан успешно. Я проверил с помощью netstat на raspberry и он действительно прослушивает *:27960 (но TCP; это проблема? UrbanTerror, как и другие игры, использует UDP). Теперь я запустил сервер на thinkpad и снова, с помощью netstat , увидел, что он прослушивает *:27960 (UDP).
Я попытался открытие клиента UrbanTerror на thinkpad и подключение к <raspberry's IP> но это не сработало. Для отладки я попробовал то же самое во время работы
tcpdump -n -e -ttt -i ue0 | grep 27960
на raspberry . Когда я попытался присоединиться к своему серверу через raspberry из UrbanTerror, в дампе появилось следующее:
188.112.111.89.27961 > 192.168.0.33.27960: UDP, length 16
192.168.0.33 > 188.112.111.89: ICMP 192.168.0.33 udp port 27960 unreachable
(Я сократил вывод для краткости)
188.112.111.89 является текущим общедоступным IP-адресом thinkpad а 192.168.0.33 конечно, raspberry . Почему порт 27960 недоступен? Очевидно, что, согласно netstat , thinkpad прослушивает этот порт.
Просто для проверки соединения я попытался запустить nc -l 27960 на thinkpad и nc localhost 27960 на raspberry: я мог общаться в обоих направлениях без проблем.
Я думаю, что также стоит упомянуть, что у меня на обоих машинах работает OpenBSD фильтр pf но я отключил его для устранения неполадок.
