Если вы можете подключиться по ssh
к хосту с удаленного компьютера, вам нужно проверить брандмауэр на хосте, если порты ssh
(22) перенаправлены на vm.
Существует аналогичный вопрос здесь.
Там это брандмауэр UFW, который должен иметь правило, как
ufw route allow 2222/tcp to 192.168.130.128 port 22
разрешить подключение к хосту через порт 2222 и пересылать tcp гостевой виртуальной машине по IP 192.168.130.128:22
И этот пользователь упомянул, что ufw
является интерфейсом для iptables
, поэтому зайдите на ваш интерфейс или отредактируйте свой iptables в этом роде.
iptables -t nat -A PREROUTING -m tcp -p tcp --dport 2222 -j DNAT --to-destination 192.168.130.128:22
Недостающая часть
Короткая версия Вы сказали iptables
добавить правило PREROUTING
в nat table
.
Недостающая часть:
#---------------------------------------------------------------
# After DNAT, the packets are routed via the filter table's
# FORWARD chain.
# Connections on port 22 to the target machine on the private
# network must be allowed.
#---------------------------------------------------------------
# The `\` masks the `linebreak` in the `bash command`
# You can `copy & paste` all the lines at once
# From the manual
# Changing to specific IP and Interfaces
# being:
# `eth0` your host adapter and
# `vmnet8` your guest adapter
Это соединение с целевой машиной:
iptables -A FORWARD -p tcp -i eth0 -o vmnet8 -d 192.168.130.128 \
--dport 22 --sport 2222 -m state --state NEW -j ACCEPT
И это фильтр от host interface
к вашему guest interface
и наоборот.
iptables -A FORWARD -t filter -o eth0 -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i vmnet8 -m state \
--state ESTABLISHED,RELATED -j ACCEPT