为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
总计 1000+ 道面试题, 内容 又全含金量又高
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
清除默认规则
[root@mysql ~]# iptables -h #查看帮助
[root@mysql ~]# iptables -F #清除所有规则,不会处理默认的规则。
[root@mysql ~]# iptables -X #删除用户自定义的链。
[root@mysql ~]# iptables -Z #链的记数器清零。
–flush -F [chain] Delete all rules in chain or all chains
–delete-chain -X [chain] Delete a user-defined chain
–zero -Z [chain [rulenum]] Zero counters in chain or all chains
禁止规则
[root@mysql ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP #禁止访问22端口
[root@mysql ~]# iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP #禁止IP地址段进入eth0网卡的流量
–table -t table table to manipulate (default: `filter’)
–append -A chain Append to chain #添加链,最后一条
–new -N chain Create a new user-defined chain #创建一个新链
–policy -P chain target Change policy on chain to target
–insert -I chain [rulenum] Insert in chain as rulenum (default 1=first) #添加链第一条
–delete -D chain Delete matching rule from chain #删除链
–proto -p proto protocol: by number or name, eg. ‘tcp’
–dport #指定目的端口
–in-interface -i input name[+] network interface name ([+] for wildcard)
–source -s address[/mask][…] source specification
-j, --jump target #对规则进行ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
打台球:如果对方告诉你不去,REJECT(拒绝),如果对方没反应,DROP(丢弃),DROP好于REJECT
使用-I和-A的顺序,防火墙的过滤根据规则顺序的
-A是添加规则到指定链的结尾,最后一条。
-I是添加规则到指定链的开头,第一条。此参数经常用来封IP
测试配置拒绝规则也是匹配
下面的测试有两个要点:非的作用,匹配拒绝也是匹配
Centos5.8版本:iptables -t filter -A INPUT -i eth0 -s ! 192.168.80.1 -j DROP
Centos6.4版本:iptables -t filter -A INPUT -i eth0 ! -s 192.168.80.1 -j DROP
查看规则
[root@mysql ~]# iptables -L -n --line-numbers #以数字形式列出防火请规则
–list -L [chain [rulenum]] List the rules in a chain or all chains
–numeric -n numeric output of addresses and ports
–line-numbers print line numbers when listing #可以用此参数显示的序号删除规则
[root@mysql ~]# iptables -t filter -D INPUT 1 #删除第一条规则
2.详解匹配标准
通用匹配:源地址目标地址的匹配
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-d:表示匹配目标地址
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上
隐含扩展:对协议的扩展
-p tcp :TCP协议的扩展。一般有三种扩展
–dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口,比如
–dport 21 或者 --dport 21-23 (此时表示21,22,23)
–sport:指定源端口
–tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)
对于它,一般要跟两个参数:
-p udp:UDP协议的扩展
–dport
–sport
-p icmp:icmp数据报文的扩展
–icmp-type:
echo-request(请求回显),一般用8 来表示
所以 --icmp-type 8 匹配请求回显数据包
echo-reply (响应的数据包)一般用0来表示
显式扩展(-m)
扩展各种模块
-m multiport:表示启用多端口扩展
之后我们就可以启用比如 --dports 21,23,80
iptables -t filter -A INPUT -p icmp --icmp-type 8 ! -s 192.168.80.1 -j DROP #禁止ping
iptables -A INPUT -d 192.168.80.100 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 192.168.80.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp ! --dport 22 -s 192.168.80.1 -j DROP
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21:24 -j ACCEPT #正确
iptables -I INPUT -p tcp --dport 21,22,23,24 -j ACCEPT #错误
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state –-state ESTABLISHED -j ACCEPT
3.企业生产环境防火墙配置
清除默认规则
iptables -F
iptables -X
iptables -Z
设置允许本地网段ssh登录
iptables -A INPUT -p tcp --dport 52113 -s 192.168.80.0/24 -j ACCEPT
设置允许本机lo通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
设置默认的防火墙禁止和允许规则:DROP掉FORWARD、INPUT,允许OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
开启信任的ip网段
#允许IDC LAN/WAN和办公网IP的访问,及对外合作机构访问
iptables -A INPUT -s 124.43.62.95/27 -p all -j ACCEPT #办公室固定IP段
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT #IDC机房的内网网段
iptables -A INPUT -s 10.0.0.0/27 -p all -j ACCEPT #其他机房的内网网段
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT #IDC机房的外网网段
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT #其他IDC机房的外网网段
允许业务服务端口对外访问(80)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许icmp类型协议通过
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 如果不想开,就不执行此步
iptables -A INPUT -p icmp -s 192.168.80.0/24 -m icmp --icmp-type 8 -j ACCEPT #允许内网ping
允许关联的包通过(ftp协议)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
使用其他主机扫描此主机的端口
[root@nfs ~]# nmap 192.168.80.105 -p 1-65535
Starting Nmap 5.51 ( http://nmap.org ) at 2016-05-20 20:14 CST
Nmap scan report for mysql.etiantian.org (192.168.80.105)
Host is up (0.00051s latency).
Not shown: 65533 filtered ports
PORT STATE SERVICE
80/tcp closed http
52113/tcp open unknown
MAC Address: 00:0C:29:5D:1D:81 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 118.12 seconds
保存防火墙的配置
/etc/init.d/iptables save #法一
iptables-save >/etc/sysconfig/iptables #法二
cat /etc/sysconfig/iptables 查看iptables配置文件
注:/etc/init.d/iptables save第二次使用时会删除第一次保存的配置
4.生产环境如何维护防火墙
生产中,一般第一次添加规则命令行或者脚本加入然后一次性保存成文件,然后以后可以改配置文件管理
手工封IP
iptables -I INPUT -s 192.168.80.20 -j DROP
自动封IP:分析web或应用日志或者网络连接状面封掉垃圾IP
[root@mysql ~]# cat dropip.sh
#/bin/bash
/bin/netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -rn|head -10|egrep -v ‘192.168|127.0’|awk ‘{if ($2!=null && $1>4) {print $2}}’ >/home/liwen/dropip.txt
for i in $(cat /home/liwen/dropip.txt)
do
/sbin/iptables -I INPUT -s
i
−
j
D
R
O
P
e
c
h
o
"
i -j DROP echo "
i−jDROPecho"i kill at date
" >>/var/log/ddos
done
5.企业iptables面试题:自定义链处理syn攻击
iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP
6.部署企业及IDC机房网关
对应实际企业办公上网场景逻辑图:
服务器网关需具备如下条件
1)物理条件是具备双网卡,建议eth0外网地址(这里是10.0.0.19,gw10.0.0.254),ethl内网地址(这里是192.168.1.19,内网卡不配GW)。
2)确保服务器网关B要可以上网(B上网才能代理别的机器上网)。可以通过ping baidu.com或ping 203.81.17.1测试。
3)内核文件/ete/sysctl.conf里开启转发功能
在服务器网关B 192.168.1.19机器上开启路由转发功能。编辑/etc/sysctl.conf修改内容为net.ipv4.ip_forward=l,然后执行sysctl -p使修改生效
4)iptables的filter表的FORWARD链允许转发
iptables -P FORWARD ACCEPT
5)不要filter防火墙功能,共享上网,因此,最好暂时停掉防火墙测试
加载iptables内核模块
配置网关需要iptables的nat表,PREROUTING,POSTROUTING。
1)载入iptables内核模块,执行并放入rc.local。
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
局域网的机器:
l)局域网的机器有一块网卡即可,确保局域网的机器C,默认网关设置了网关服务器B的ethl内网卡IP(192.168.1.19)。把主机C的gateway设置为B的内网卡192段的网卡ip,即192.168.1.19。
2)检查手段:分别ping网关服务器B的内外网卡IP,都应该是通的就对了。
3)出公网检查除了ping网站域名外,也要ping下外网IP,排除DNS故障。不通。
4)ping10.0.0.254网关也是不通的。
局域网共享的两条命令方法
方法1:适合于有固定外网地址的:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.19
(l)-s 192.168.1.0/24办公室或IDC内网网段。,
(2)-o etho为网关的外网卡接口。
(3)-j SNAT --to-source 10.0.0.19是网关外网卡IP地址。
方法2:适合变化外网地址(ADSL):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
注:配置NAT必须开启防火墙转发功能,并且允许forward表通过
把外部lP地址及端口映射到内部服务器地址及端口
在10段主机可以通过访问10.0.0.19:80即可访问到92.168.1.17:9000提供的web服务
iptables -t nat -A PREROUTING -d 10.0.0.19 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.17:9000
强调:有个别同学说网关服务需要开启80服务,但不需要对外服务?.
测试结果:网关开启httpd 80后。
此时:来自80端口的请求转发依然会转发到后端的服务器。但是当iptables nat规则删除后,此时就到达了httpd服务监听的80端口,所以显示的是默认的页面。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
器。但是当iptables nat规则删除后,此时就到达了httpd服务监听的80端口,所以显示的是默认的页面。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!