-
Notifications
You must be signed in to change notification settings - Fork 105
public_network_access_vm
遇见王斌 edited this page Feb 26, 2018
·
4 revisions
OpenStack 创建的虚拟机的使用场景有
- 公网访问(演示类服务 / 对外业务)
- 自己使用的服务(测试或者自用)
OpenStack 中的虚拟机如果想公网访问,而又没有那么多的公网 IP,则可以使用端口转发的方式
- 端口转发工具 Rinetd
登陆类端口
- 22 对应 10000 加上实例 IP 后三位,例如 172.12.12.117 对应要填端口号为 10117
- 3389 对应 11000 加上实例 IP 后三位,例如 172.12.12.117 对应要填端口号为 10117
网页类端口
- 80 对应 20000 加上实例 IP 后三位
- 443 对应 21000 加上实例 IP 后三位
其他应用端口
- 30000-59000 端口加实例 IP 后三位
在 OpenStack 上架设 VPN 服务器,需要访问虚拟机的人通过连接 VPN 可以和虚拟机在同一个网段,则可以连接到虚拟机
在 OpenStack 平台创建的虚拟机中安装 Docker 环境,然后进行部署 OpenVPN
// 第一步
docker pull kylemanna/openvpn
OVPN_DATA="/data/ovpn-data"
// 下面的全局变量换成你的服务器的外网 ip
IP="xxx.xxx.xxx.xxx"
mkdir -p ${OVPN_DATA}
// 第二步
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://${IP}
// 第三步
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
// ---------------------------------------------------------
Enter PEM pass phrase: 输入 123456(你是看不见的)
Verifying - Enter PEM pass phrase: 输入 123456(你是看不见的)
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 回车一下
Enter pass phrase for /etc/openvpn/pki/private/ca.key: 输入 123456
// ---------------------------------------------------------
// 第五步
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
// ---------------------------------------------------------
Enter pass phrase for /etc/openvpn/pki/private/ca.key: 输入 123456
// ---------------------------------------------------------
// 第六步
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > ${OVPN_DATA}/CLIENTNAME.ovpn
// 第七步
docker run --name openvpn -v ${OVPN_DATA}:/etc/openvpn -d -p 1194:1194 --privileged kylemanna/openvpn
下载 OpenVPN,并安装。
将 CLIENTNAME.ovpn 复制到安装目录的 config 目录中,如 C:\Program Files\OpenVPN\config 中。
运行 OpenVPN GUI,在桌面右下角,可以看到 OpenVPN 的图标。右键点击 connect 即可连接 VPN。不信,你可以在百度输入 IP,查看下自己的 IP。
上面部署 OpenVPN 采用静态密钥(static-key)的方式,相对于证书方式,static-key 不需要 TLS 握手,不易被干扰,缺点也显而易见,那就是只能配置一对一的网络
OVPN_DATA="/data/ovpn-data"
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full meetbill nopass
// ---------------------------------------------------------
Enter pass phrase for /etc/openvpn/pki/private/ca.key: 输入 123456
// ---------------------------------------------------------
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient meetbill > ${OVPN_DATA}/meetbill.ovpn
Client 可以访问的地址是 OpenVPN server 容器可以访问的地址,在 OpenStack 物理机上使用 Docker 部署后,容器中无法访问 OpenStack 的实例 IP(因为实例网段在物理机上的物理网卡是由 OpenStack 重新管理的)
使用 host 网络模式后,连接的 client 只能连接 server 所在的机器