Извините, если заголовок неясен, вот настройка:
Есть машина A
, под управлением Linux. A
является частью университетской сети и имеет единый сетевой интерфейс с реальным IP. Но подключения из-за пределов кампуса к порту 22 (и некоторым другим) заблокированы на уровне коммутатора, и это невозможно изменить.
A
работает pptpd (localip {realip}, remoteip 10.0.0.100-200) и выполняет NAT для всех подключенных клиентов (через правило iptables iptables -t nat -A POSTROUTING -o eth1 -s 10.55.248.0/24 -j MASQUERADE
).
Есть возможность ssh на любую университетскую машину через VPN-туннель, чтобы A
, Кроме A
сама, извне (B
)
Я так понимаю, мы не можем просто поменять таблицу маршрутизации на B
, так как это сломает туннель, но я бы очень хотел иметь возможность ssh для A
из B
через VPN-туннель, поскольку у нас не может быть выделенного сервера для VPN, вместо этого мы используем один из вычислительных узлов, который сам должен быть доступен через ssh.
Итак, вопрос: можно ли каким-то образом заставить часть трафика на VPN-сервер проходить через vpn-туннель на указанный сервер?
Я понимаю, что можно изменить порт прослушивания ssh или добавить iptables
правило на B
, но B
не является отдельной машиной, поэтому это может быть почти любая ОС (ну, вряд ли что-то еще, кроме Windows или Linux, но в любом случае) и может использоваться человеком, не желающим вмешиваться в ручное добавление правил маршрутизации.
Пожалуйста, поправьте меня, если я неправильно это понимаю. A и B находятся в одной сети, а A доступен из Интернета. Вы хотите подключиться к B через A?
Если это верно, вы можете использовать прокси-сервер socks, который, если вы используете ssh на A, вы можете использовать, набрав ssh -D 9999 hostnameA. Затем вы можете настроить приложение для использования вашего прокси-сервера socks на 127.0.0.1 порту 9999.
Я использую это довольно часто, чтобы добраться до удаленных сетей.
Надеюсь это поможет.