У меня есть сервер, который виден из-за пределов моей маленькой сети, у сервера есть доменное имя и тому подобное. И у меня есть локальная машина, которую сервер видит, но снаружи она недоступна.
Поэтому я хочу иметь возможность подключиться к порту на сервере, но вместо этого поговорить с моей локальной машиной.
Могу ли я сделать так, чтобы трафик, поступающий на один порт сервера, передавался на другой порт моей локальной машины?
Вы можете просто использовать openssh для этого: https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
Команды для поиска: -L или -R.
Допустим, вы хотите перенаправить порт 4444 на сервере на порт 5555 на локальной машине. На сервере используйте
ssh -L 4444:local_machine_name:5555 user@local_machine_name
или на локальной машине
ssh -R 4444:localhost:5555 user@server_machine_name
(в первом примере вы можете подключиться к любой другой машине, нет необходимости подключаться к local_machine_name, вы можете просто используйте localhost для подключения к самому серверу).
Еще один более сложный способ - использовать сервер в качестве маршрутизатора. См. https://help.ubuntu.com/community/Router и особенно https://help.ubuntu.com/community/Router#Enable_IP_forwarding_and_Masquerading . Это то, что делают большинство небольших кабельных или домашних маршрутизаторов DSL.
Это возможно при использовании iptables. На linuxhomenetworking.com есть хорошая инструкция, а дополнительную информацию о iptables можно найти в вики ubuntu . Обратите внимание, что в iptables есть также графический интерфейс, называемый Firestarter .