操作系统

Linux运维基础技能: 接入层与网络基础

Jager · 11月29日 · 2018年 · · 1560次已读

本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。

希望对需要学习、面试 Linux 运维的同学有所帮助。Linux运维基础技能: 接入层与网络基础

MSS与MTU的区别,默认大小各是多少?

  • 标准以太网接口缺省的MTU(最大传输单元)为1500 字节,是最大帧1518减去源宿的MAC、FCS后最大的IP packet大小;
  • MTU减去20字节IP包头减去20字节TCP包头 ,即是MSS,1460字节
  • 一台交换机要保证接口MTU的一致性。如果在一个VLAN上、或整个交换机都采用同样的MTU,避免一些奇怪的问题
  • 参考:https://www.zhihu.com/question/21524257

TIME_WAIT 与CLOSE_WAIT 的区别

主动关闭连接的一方进入TIME_WAIT ,若客户端高并发访问HTTP接口又没有使用会话或者线程池机制,可能会导致本地端口耗尽。

CLOSE_WAIT 出现在被动断开连接。可能常见在Server端,例如在Netty的I/O线程里做DB读写、日志记录这种不可控的阻塞行为,可能会引发客户端超时。

如何查看机器上所有的tcp连接?

natstat -ant

netstat -antp 如何统计time_wait 状态的连接?

netstat -antp|grep TIME_WAIT|wc -l

IP 包头大小?

20 字节

  • url.cn 是几级域名? — 二级
  • www.qq.com 是几级域名? — 三级
  • url.cn 可以CNAME到 demo.te.isc.demo-cloud.net 吗?

不建议这么操作,实际上很多场合是不可以这么操作的。

https://serverfault.com/questions/613829/why-cant-a-cname-record-be-used-at-the-apex-aka-root-of-a-domain

递归解析与迭代解析的区别?

Linux运维基础技能: 接入层与网络基础

先理解13组根DNS服务器、顶级域DNS服务器(各解析.com .net .gov 等)、权威DNS服务器、本地DNS服务器。

考虑浏览器客户端访问www.qq.com ,会向小区宽带的本地DNS查询域名解析IP ,而本地DNS会向根DNS、顶级域DNS、权威DNS逐个查询。

从客户端到本地DNS的查询是递归的;而其余的查询是迭代的。(参考《自顶向下理解计算机网络》89页)

x-forwarded-for 与 remote_addr 的区别?

  • X-Forwarded-For: client1, proxy1, proxy2

<proxy1>, <proxy2>如果一个请求经过了多个代理服务器,那么每一个代理服务器的IP地址都会被依次记录在内。也就是说,最右端的IP地址表示最近通过的代理服务器,而最左端的IP地址表示最初发起请求的客户端的IP地址。

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For

鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址

  • remote_addr 是通讯客户端与服务器实际进行TCP通信的IP

IPv4地址分类 (IPv4地址32位)

A 类 0.0.0.0/8 127.255.255.255 结束

B 类 128.0.0.0/16 191.255.255.255 结束

C 类 192.0.0.0/24

D 类 224.0.0.0~239.255.255.255

192.168.2.47/26 这个子网的开始IP 和结束IP是?

(32-26)=6 , 2^6 = 64 ,故每64个IP是一个子网,而47 落在0-63 这个子网,故 192.168.2.0 是网络号;可用IP 是192.168.2.1~192.168.2.62 ;192.168.2.63 是广播IP 地址。

IPv6 地址的格式与缩写规则,怎么判断哪些是合法的IPv6地址?

(IPv4 地址是32位)

https://www.ibm.com/support/knowledgecenter/zh/ssw_ibm_i_72/rzai2/rzai2ipv6addrformat.htm

IPv6 地址大小为 128 位 完整写法是8段 ,0000:0000:0000:0000:0000:0000:0000:0000 至 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

省略前导零通过省略前导零指定 IPv6 地址。例如,IPv6 地址 1050:0000:0000:0000:0005:0600:300c:326b 可写作 1050:0:0:0:5:600:300c:326b。

双冒号通过使用双冒号(::)替换一系列零来指定 IPv6 地址。例如,IPv6 地址 ff06:0:0:0:0:0:0:c3 可写作 ff06::c3。一个 IP 地址中只可使用一次双冒号。

IPv4 地址如何映射到IPv6

例如 0:0:0:0:0:ffff:192.1.56.10 和 ::ffff:192.1.56.10/96(短格式)

Ipv6 保留地址 https://zh.wikipedia.org/wiki/%E4%BF%9D%E7%95%99IP%E5%9C%B0%E5%9D%80

LVS 三种工作模式是什么?

NAT,IP tunneling, Direct Route

tcpdump 抓包的几个参数

src host
dst host
-c 包个数
-w xxx.pcap
port 端口
not
portrange 1-1024
-n 不将IP显示为域名
-nn 显示原始端口号和协议

拓展阅读http://packetlife.net/media/library/12/tcpdump.pdf

iptables 实例

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

三表五链

filter 定义允许或者不允许的,只能做在3个链上:INPUT ,FORWARD ,OUTPUT

nat 定义地址转换的,也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING

mangle功能:修改报文原数据,是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

持久化

cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份
iptables-save > /etc/sysconfig/iptables

拓展阅读https://wangchujiang.com/linux-command/c/iptables.html

iptables如何设置只允许内网10.142.31.1来访问本机的7001 7002 7003端口

iptables -I INPUT -p tcp port 7001:7003 -s 10.142.31.1 -j ACCEPT
iptables -I INPUT -p tcp port 7001:7003 -j DROP

iptables 设置允许8080 80 443 以及主动出去的,其他拒绝

iptables -I INPUT -p tcp --dport 443 -i eth0 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -i eth0 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -j DROP

常见加密算法

对称 DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

非对称 RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

nginx的负载种类

轮询(默认)、权重 weight、IP hash、URL hash

nginx location 匹配:

= 用于标准uri前,要求请求字符串与uri严格匹配,一旦匹配成功则停止

~ 用于正则uri前,并且区分大小写

~* 用于正则uri前,但不区分大小写

^~ 用于标准uri前,要求Nginx找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,(匹配符合以后,停止往下搜索正则,采用这一条)而不再使用location块中的正则uri和请求

拓展阅读http://seanlook.com/2015/05/17/nginx-location-rewrite/

Nginx配置文件结构:
Linux运维基础技能: 接入层与网络基础

拓展阅读https://segmentfault.com/a/1190000015646701

17 条回应
  1. 森纯博客 2018-12-1 · 10:21

    涨姿势了,觉得运维好难

    • 青山 2018-12-2 · 20:10

      可能认真学就好了

  2. ntsantuo.com 2018-12-10 · 17:45

    有用,前两天弄linux服务器搞死了,楼主截图真么多不容易

  3. 楚狂人博客 2018-12-10 · 21:06

    博主的系列文章,都很有学习价值

  4. 我爱技术网 2018-12-17 · 11:33

    涨姿势了,觉得运维好难 😳

    • wordpress建站吧 2019-1-19 · 14:59

      运维也要分等级的吧,低级高级运维,,,入门容易 高级就难了

  5. 王光卫博客 2018-12-17 · 18:46

    没想到博主服务器玩得这么牛

  6. VPS234 2018-12-19 · 14:45

    Ngnix不错,为了对抗Istio还在准备NgniMesh

  7. 王光卫博客 2018-12-26 · 21:07

    这个专业的网络技术

  8. 自闭症 2019-1-5 · 16:41

    隔三差五来支持一下!!!学习了!

  9. 微信 2019-1-7 · 18:17

    好文章,非常详细,博主辛苦了

  10. 微信 2019-1-7 · 18:30

    文章不错 非常喜欢

  11. 温暖的家 2019-1-8 · 18:50

    涨知识了,谢谢楼主文章

  12. 搜程快排系统 2019-1-10 · 12:18

    Linux 运营确实比较麻烦的

  13. 简单生活 2019-1-16 · 9:36

    老哥看来最近忙,很久没更新了!

  14. 曹金龙 2019-1-23 · 14:09

    运维真的是很难呢

  15. WordPress建站吧 2019-2-16 · 13:24

    咦。换主题了啊