You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从非控制节点通过SSH访问OpenStack(MicroStack)实例?

解决WSL访问MicroStack实例浮动IP的方案

根据你的场景,控制节点S1能正常访问实例,但WSL无法直接连接,核心问题是WSL所在的本地网络没有路由到MicroStack的浮动IP网段,或者需要通过端口转发来绕过路由限制。下面提供两种可靠的实现方式,都需要先开启S1的IP转发功能:

第一步:开启S1的IP转发(必须操作)

首先让S1具备路由转发能力,这是NAT/路由功能的基础:

# 临时开启(重启后失效)
sudo sysctl -w net.ipv4.ip_forward=1
# 永久生效,写入配置文件
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

方法一:添加静态路由(推荐,直接访问浮动IP)

这种方式让WSL直接把浮动IP网段的流量指向S1,就能像S1一样直接SSH到10.20.20.100。

1. 确认S1的本地网络IP

先在S1上查看连接本地网络的网卡IP(比如eth0或ens33):

ip addr show eth0

假设得到的IP是192.168.1.20(替换成你实际的S1本地IP),MicroStack浮动IP网段是10.20.20.0/24。

2. 在WSL中添加路由

打开WSL终端,执行:

sudo ip route add 10.20.20.0/24 via 192.168.1.20 dev eth0

如果WSL重启后路由消失,可以把这条命令加到WSL的启动脚本里(比如~/.bashrc)。

3. 配置S1防火墙允许转发

如果S1用ufw防火墙,执行:

sudo ufw allow in on eth0 to 10.20.20.0/24
sudo ufw allow out on br-ex to 10.20.20.0/24
sudo ufw reload

如果用iptables,执行:

sudo iptables -A FORWARD -i eth0 -o br-ex -d 10.20.20.0/24 -j ACCEPT
sudo iptables -A FORWARD -i br-ex -o eth0 -s 10.20.20.0/24 -j ACCEPT

完成后,你就可以在WSL中直接执行:

ssh 10.20.20.100

方法二:端口转发(无需修改路由)

如果不想配置路由,也可以通过S1做端口转发,把S1的某个端口映射到实例的SSH端口(22)。

1. 设置iptables端口转发规则

在S1上执行:

# 将S1的2222端口转发到实例10.20.20.100的22端口
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -j DNAT --to-destination 10.20.20.100:22
# 配置返回流量的SNAT,确保实例能正确回包
sudo iptables -t nat -A POSTROUTING -o br-ex -j MASQUERADE

如果要让规则永久生效,可以安装iptables-persistent保存规则:

sudo apt install iptables-persistent
sudo netfilter-persistent save

2. 在WSL中通过S1端口访问

现在你可以在WSL中通过S1的本地IP和转发端口连接实例:

ssh -p 2222 <实例用户名>@192.168.1.20

替换<实例用户名>为你实例中的实际用户名(比如ubuntu)。


注意事项

  • 确保实例的防火墙允许SSH访问(你已经能从S1访问,所以这步应该没问题)
  • 如果S1的本地IP是动态的,方法一的路由需要手动更新;方法二不受影响,但要注意S1IP变化后修改WSL的SSH命令

内容的提问来源于stack exchange,提问作者blintso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:03:15