Настроить
Дома у меня есть маленькая 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
но я отключил его для устранения неполадок.