[Azure]ARM模式下没有公网IP地址的虚拟机如何与外部通信

ARM模式下,Azure将公网IP地址作为一个资源(对象)独立出来,通过将其绑定到不同的资源(虚拟机,负载均衡器,应用程序网关等等)上来使用。

 

那么对于一个虚拟机来说,如果在创建的时候没有为其指定公网IP地址,外部是无法访问其内部的任何服务的(配合负载均衡器使用除外,这个后续再描述),原因是外部没有一个公网地址作为入口或者IP报文的目的端来进行报文发送。反过来,对于没有为网络接口绑定公网IP地址的虚拟机来说,在其内部访问公网的时候,是否能够进行通信呢?

 

我们通过下面的实验来测试一下:

准备环境:为了便于抓包测试,我们在中国东部创建了一台公网IP地址为139.219.188.238ARM虚拟机并搭建了DNS Server,用来作为服务器端,在中国北部一个虚拟网络下创建了多台没有公网IP地址的ARM虚拟机作为客户端,同时在这个中国北部的虚拟网络下又创建了一台公网IP42.159.119.65的虚拟机作为跳板机(原因是没有公网IP地址的虚拟机无法从外部直接RDP,所以需要通过跳板机来内网登陆)。

 

我们在中国北部的这些没有公网IP的虚拟机内进行DNS解析,并将解析使用的DNS服务器指向中国东部的服务器(139.219.188.238),同时在中国东部的服务器内进行抓包:

计算机生成了可选文字:, DarnNcfthTest . 42 . 1 5 1 1 SS: - Remote [ 0 n n ecti 0 n 172 . 15n7 Remote Desktop Connectlon Admlnlstrator C ÅWlndowsÅsystem32Åcmd exe Recycle I Rec S e e d . . 219 . 18 8 . 2 3 8 ic , . 0 s 0 f t W in do WS [ U e rs io n 6 . 3 . 9 6 øø ] ( c ) 2 øI 3 M ic ' . 0 s 0 f t Corporation. R 11 rights :XUsersXdanie1)ns100kup ' ^ ^ ba idu . c 0 " 13 9 U n Kn 0 wn ddress : 13 9 . 219 . 18 8 . 2 3 8 0 n ho it at e S : . . S if n . C 0 61 . 13 5 . 16 9 . 12 5 S S e S : 61 . 13 5 . 16 9 . 121 e S : 172 . 15n4 Remote Desktop Connectlon Admlnlstrator C ÅWindowsÅsystem32Åcmd exe UsersXdanie1)ns100kup ' ^ ^ ba idu . c 0 " 13 9 . 219 . 18 8 . 2 3 8 U n Kn 0 wn 13 9 . 219 . 18 8 . 2 3 8 ho it at e S : . . S if n . C 0 61 . 13 5 . 16 9 . 121 S S e S . e S . 61 . 13 5 . 16 9 . 12 5 1 72 . 15 0 5 Remote Desktop Connectlon Admlnlstrator C ÅWlndowsÅsystem32Åcmd exe S e e d . . 219 . 18 8 . 2 3 8 ic , . 0 s 0 f t W in do WS [ U e rs io n 6 . 3 . 9 6 øø ] ( c ) 2 øI 3 M ic ' . 0 s 0 f t Corporation. R 11 rights :XUsersXdanie1)ns100kup ' ^ ^ ba idu . c 0 " 13 9 U n Kn 0 wn ddress : 13 9 . 219 . 18 8 . 2 3 8 0 n ho it at e S : . . S if n . C 0 61 . 13 5 . 16 9 . 121 S S e S : 61 . 13 5 . 16 9 . 12 5 e S : :XUsersXdanieI)_

在中国东部的虚拟机(139.219.188.238)中的抓包结果:

计算机生成了可选文字:DanSen,erDBR2 - Microsoft Network Monitor 3.4 View Frames Capture Remote Desktop Connection Parser Profiles Color Rules Options Save Filter Aliases As Tools Help Capture Settings Load Filter New Capture Capturel Open Capture Start Save Start Page Parsers Network... Display Filter All TraFFic Other Remove Source 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 Destination DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 DANSERVER08R2 42.159.117.176 Protocol Name DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS _ Apply Process Name Frame Summary - 'Conversation Filter) AutoScroll Time Date Local Adjusted Time OFFset Descri bion DNS: uer Id- DNS:Query1d DNS:Query1d 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:21: 4:24: 4:24: 4:24: 4:24: 45 PM s 8 2017 45 PM 51812017 45 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 46 PM 51812017 00 PM 51812017 00 PM 51812017 00 PM 51812017 00 PM 51812017 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 72. 1843408 1853297 2249424 2635295 2992314 2993373 3311971 3659651 3977201 3978015 4334992 4656209 5039463 5040414 5359121 6940788 dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe - oxl oxl, ox2, ox2, ox3, ox3, ox4, ox4, oxs, oxs, ox6, ox6, ox7, ox7, ox8, ox8, oxl, oxl, ox2, ox2, LIERY Standard ue QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que QUERY (Standard que DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d 206.4394418 206.4396122 206.4783055 206.5869441

 

由于我们在解析时DNS服务器的地址是这台中国东部的服务器,所以在这台服务器上能够抓取到对应的DNS请求的报文,从上面的抓包结果来看,我们发现,尽管我们在创建这些中国北部虚拟机的时候并未指定公网IP地址,但是Azure实际上,仍然允许这些虚拟机进行公网通信,同时,会为这些虚拟机分配一个公网IP地址(上面抓包结果中的42.159.117.17642.159.117.46139.217.10.214分别对应上面三台测试的客户端)用于通信。

 

进一步猜想,会不会这些公网IP地址是以一种隐式的方式分配给这三台客户端的呢?我们测试一下上面这三个IP地址,发现都无法ping通:

C:\Users\DanielHX>ping42.159.117.176

Pinging42.159.117.176 with 32 bytes of data:

Requesttimed out.

Pingstatistics for 42.159.117.176:

    Packets: Sent = 1, Received = 0, Lost = 1(100% loss),

Control-C

^C

C:\Users\DanielHX>ping42.159.117.46

Pinging42.159.117.46 with 32 bytes of data:

Requesttimed out.

Requesttimed out.

Pingstatistics for 42.159.117.46:

    Packets: Sent = 2, Received = 0, Lost = 2(100% loss),

Control-C

^C

C:\Users\DanielHX>ping139.217.10.214

Pinging139.217.10.214 with 32 bytes of data:

Requesttimed out.

Pingstatistics for 139.217.10.214:

    Packets: Sent = 1, Received = 0, Lost = 1(100% loss),

Control-C

^C

 

对这些IP地址做端口扫描可以发现这些IP地址并没有开放任何端口,所以实际上这些地址并没有与这几台作为客户端的虚拟机进行关联,仅仅是作为一个临时的出口IP地址来让这些虚拟机可以访问公网而已。

使用同一台客户端虚拟机多次进行同样的DNS解析时,可以发现,对于同一台虚拟机,这些临时的IP地址在每次解析时是不变的,也就是会一直作为这台虚拟机的临时公网IP来使用。

 

我们进一步来做试验,将这几台虚拟机关闭掉,然后再开机。再次抓包:

计算机生成了可选文字:DanSemeOBR2 - 13g.21g.we.23e:33eg Microsoft Network Monitor 3.4 View Frames Capture Remote Desktop Connection Parser Profiles Color Rules As Tools Help Capture Settings Load Filter New Capture Open Capture Start Save save Fill Capturel Start Page Parsers Network... Display Filter All TraFFic Other _ Apply Remove Process Name Source DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 Destination 139.217.10.214 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.113.173 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 42.159.124.97 DANSERVER08R2 Protocol Name DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS DNS Frame Summary - 'Conversation Filter) 10536 10539 10540 10543 10544 10545 10546 10549 1 osso lossl 10552 1 osss 1 osss 10557 10568 1 s072 1 s073 1 s074 1 s077 1 s07g 1 soao 15081 15084 1 soas AutoScroll Time Date Local AdUsted Time OFFset 746.9080300 Descri bion DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d oxg, oxl, oxl, ox2, ox2, ox3, ox3, ox4, ox4, oxs, oxs, ox6, ox6, ox7, ox7, ox8, ox8, oxl, oxl, ox2, ox2, ox3, ox3, ox4, ox4, oxs, QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc QUERY (stanc 4:33: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:39: 4:51: 4:51: 4:51: 4:51: 4:51: 4:51: 4:51: 4:51: 4:51: 00 PM 51812017 SS PM 51812017 SS PM 51812017 SS PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 56 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 14 PM 51812017 IS PM 51812017 dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. dns. exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe exe 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1162. 1841. 1841. 1841. 1841. 1841. 1841. 1841. 1841. 1841. 209... 210... 243... 280... 320... 320... 356... 388... 428... 428... 470... sag... 516... 546... 747... 066... 069... 102... 135... 167... 167... 199... 238... 269...

从抓包可以发现,关闭虚拟机再开机后,这些虚拟机对应的临时公网IP地址也相应地发生了变化,即这些临时的公网IP地址是“动态的”。

 

那么如果虚拟机前端配置了负载均衡器呢?

我们创建一个外部负载均衡器,为其指定一个公网IP地址,并在这个负载均衡器的后端池里添加一个作为客户端的虚拟机:

计算机生成了可选文字:DanSLB IP it:P 1104c329a3... Backend (1 éÉMffl,) NAT *LB!! DanSLBlP DanNorthResourceGroup1 Internal-005 bcf24cf7-8796-45ea- be58

在没有为负载均衡器配置负载平衡规则或者NAT规则的时候,为其指定的公共IP地址其实并没有获得具体的IP,所以此时,虚拟机仍然使用之前获得的临时IP地址来与公网通信。

接着我们添加一个NAT规则:

计算机生成了可选文字:DanSLB - NAT RDPRule 1 pv4 RDP (TCP/3389) 42.159.124.97 Dan InnerServer

添加完NAT规则后,负载均衡器对应的公网IP也获取到了具体的地址42.159.124.97

计算机生成了可选文字:DanSLB , 0 ()t 刀 活 动 日 志 访 同 控 制 〔 标 匚 访 同 管 理 ) 刖 、 , 池 砂 移 而 除 1 104C3 四 a3 “ Backend ( 1 台 虍 机 } 负 载 平 衡 规 则 NAT 规 贝 」 1 入 站 , : 共 IP 1 乸 址 42 · 159 · 124 · 97 (DanSLBlP) 改 〕 DanNorthResourceGroup1 中 国 北 部 订 名 改 〕 Internal-005 订 ID bcf24cf7 8796 一 45ea -be58

 

再看一下这台后端池里的虚拟机:

计算机生成了可选文字:巨 11 而 , 0 ()t 刀 活 动 日 志 谊 闫 控 制 〔 标 Qi 方 闫 管 理 ) 可 用 1 讠 改 〕 0 重 新 启 动 . 停 止 砂 移 DanNorthResourceGroup1 DanlnnerServer 作 累 統 Windows 标 准 DI ( 1 核 心 , 引 5 GB 内 公 共 甲 *bfDNS 名 称 以 签 42 . 159 . 124 . 97 / < none > 拟 网 到 子 网 DanNorthVNET/Subnet-1 正 在 运 行 中 国 北 部 订 名 改 〕 Internal-005 订 ID bcf24cf7 8796 一 45ea -be58 1 104C3 四 a “

可以看到,这台虚拟机自动会将负载均衡器的前端IP作为自己的公网IP地址来使用,再次在这台虚拟机中进行DNS解析,DNS服务器仍然指向中国东部的那台服务器,并在这台东部的虚拟机内再次抓包,可以看到此时这台客户端虚拟机不再使用之前的临时公网IP地址来进行公网通信,而是使用负载均衡器的前端IP来进行通信:

计算机生成了可选文字:DanSemeaeR2 - 13g.21g.we.23e:33eg Microsoft Network Monitor 3.4 View Frames Capture Remote Desktop Connection Parser Profiles Color Rules Tools Help Capture Settings Load Filter Start New Capture Capturel Network Co... Open Capture Save As Start Page Parsers Display Filter Remove All TraFFic Apply My TraFFic svcho Windo MonA Process Name dns.exe dns.exe dns.exe dns.exe Frame Summary - 'Conversation Filter) Source 42.159.124.97 42.159.124.97 DANSERVER08R2 DANSERVER08R2 Destination DANSERVER08R2 DANSERVER08R2 42.159.124.97 42.159.124.97 Protocol Name DNS DNS DNS DNS QUER QUER QUER QUER d_lnkn AutoScroll Other TraF Time Date Local AdUsted PM 51812017 PM 51812017 PM 51812017 PM 51812017 Time OFFset 16.7343742 16.7405070 16.9203026 20.2906311 Descri bion DNS:Query1d DNS:Query1d DNS:Query1d DNS:Query1d oxs, ox4, oxs, ox4,

进一步实验,我们将上面的负载均衡器删除,对应的公网IP删除后,这台客户端虚拟机仍然会使用上面的IP地址42.159.124.97作为其临时IP地址来通信。

 

总结一下上面的实验结果:

  1. 对于ARM下的虚拟机,在没有为其配置公网IP,且这台虚拟机没有在负载均衡器后面(或者负载均衡器未配置探测或者NAT规则,其前端IP没有获取到具体地址的前提下)的时候,Azure会为这台虚拟机分配一个临时的公网IP地址,这台虚拟机可以使用这个临时公网地址与公网通信。
  2. 在不关机的情况下,这个临时公网IP地址不会发生变化,但是虚拟机关机再开机后,这个IP地址会变化。
  3. 如果没有为虚拟机配置公网IP地址,而虚拟机在负载均衡器后面的时候,虚拟机会自动将负载均衡器的公网IP地址作为自己的公网地址与公网通信。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值