0

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

 2 years ago
source link: https://zhang.ge/5141.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Jager · 11月29日 · 2018年BAT公司面试经验 · 运维工程师面试 · 面试题 605次已读

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

希望对需要学习、面试 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 包头大小?

  • 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

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

先理解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 端口
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配置文件结构:

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK