DevOps

网络排查工具

rpc 依赖底层的通信框架,可以指定端口发布服务(本地启动多个微服务时注意修改端口)。
telnet 命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个TCP连接。
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
ssh 登陆 linux 服务器的协议,在 cmd 中也“可以用”。
a,b(如云内部服务器)两个网络相互不通
1、可以配置负载均衡,将b的某个web服务发布出来,a可访问之;
2、可以配置弹性公网ip,这样b的所有端口a都可访问;

命令

curl -I 显示 HEAD请求标头
curl -d’login=emma&password=123’-X POST
curl -d ‘{}’ -H ‘Content-Type: application/json’
curl -H ‘Referer: https://google.com?q=example'
curl -v 显示通讯过程

内网ecs与公网互通策略

现象或目标:银联测试环境 可访问 超网服务器

出去的公网ip:106.37.214.91
EIP:10.200.133.94
云内ecs:10.1.132.2:8080

问题及排查思路

现在出方向和入方向106.37.214.91 都和 EIP 10.200.133.94 关联了;实际入方向和出方向要分开关联不同的IP的,入方向关联SLB,出方向关联EIP。
出去的时候防火墙是对EIP 做SNAT转换,进来的时候防火墙是对公网IP做DNAT 转成公网SLB VIP。
要检查下防火墙的DNAT规则,或者SLB的健康检查是否正常。
是哪个SLB呢?
1、看下防火墙的DNAT规则转成那个IP,然后通过这个IP去找SLB实例;
2、查下ascm ngnix挂在哪个下面。

方案

1、公网ip 106.37.214.90 与 防火墙DNAT规则 做了映射,开通 端口10022到 外网slb 的映射
2、外网slb 10.200.128.9 添加监听端口10022,tcp协议 映射到 nginx
3、nginx 10.1.132.83 配置反向代理。10022端口到后端服务器10.1.132.2:8080端口。
nginx 10.1.132.83:10022
外网slb:10.200.128.9:10022
最终进来的公网ip:106.37.214.90:10022。(开通端口10000-10005,10007,10009,10020-10024)

最终网络结构
出去:
ECS(目的ip:公网目的ip 源IP:ECS IP)—->NAT网关+EIP (目的ip:公网目的ip,源IP:EIP)—->防火墙(目的ip:公网目的ip,源IP:106.37.214.91)
进来:
目的IP:106.37.214.90 源IP:公网源IP —-> 防火墙(目的IP:云内公网SLB VIP 源IP:公网源IP)—->SLB—->(Nginx服务器-可有可无)—->ECS

其他方案

在ASCM 创建一个公网SLB,后端服务器绑定10.1.132.2。
因为EIP现在和NAT网关做了绑定,NAT网关是SNAT,所以只能让ECS访问公网,如果EIP和ECS绑定,那这个ECS是既能访问公网,也能被公网访问的。