17---网络配置

xiaoxiao2021-02-28  99

2017-05-05  22:24 初稿;未完待续

2017-05-07  补充 nmcli 的基本用法

================

管理网络服务的脚本 CentOS 5   /etc/init.d/network {start|stop|restart|status}, CentOS 6  /etc/init.d/NetworkManager {start|stop|restart|status} 建议 6 上也使用 network 而停用 NetworkManager  <--- NetworkManager 服务开启时,network 服务不生效 -------------------------------- service NetworkManager stop  <--- 本次停掉 NetworkManager chkconfig NetworkManager off  <--- 永久停掉6上的 NetworkManager -------------------------------- service 是一个 shell 脚本,即  /sbin/service chkconfig 是一个二进制程序,本文最后有 chkconfig 的用法讲解 -------------------------------- CentOS 6.0  可在 /etc/udev/rules.d/70-persistent-net.rules 修改网卡名称,需要与网卡配置文件 /etc/sysconfig/network-script/ifcfg-* 中的 DEVICE 字段一致,网卡配置文件建议命名为 ifcfg-nicName 每添加一块网卡,建议在 /etc/sysconfig/network-script/ 下建立 ifcfg-nicName 的配置文件 -------------------------------- 查看网卡驱动模块 ethtool -i nicName  ---> 得到 e1000,应该是千兆网卡。用 lsmod | grep 'e1000' 验证下是否加载了该模块 卸载网卡驱动模块 rmmod e1000  或者   modprobe -r e1000 加载网卡驱动模块 modprobe e1000 =========== 网络配置命令 ip ip [OPTIONS] OBJECT COMMAND 常用 OBJECT 有 link ,address,route 常用 COMMAND 有 set,add,del,show 具体常用用法如下: ----------链路--------- ip link show [nicName]   <--- 结果其实是 ip add show 的一部分 ip link show [up] ip link set nicName {up | down} ip link set nicName promisc {on | off}    // 是否开启混杂模式 ip link set nicName mtu #    // 设置 MTU 大小(MTU相关知识点见上一篇) ip link set nicName address 12:23:34:45:56:67    // 设置网卡 MAC 地址 ---------IP地址--------- ip add add ifAddress dev nicName [label nicAlias ]    <--- 给网卡指派一个 secondary IP,可以打上网卡别名 ip add replace ifAddress dev nicName [label nicAlias ]     <--- 修改替换某路由条目 ip add del ifAddress dev nicName  [label nicAlias ]  <--- flush 与 del 的区别是什么? ip add show [dev nicName ] [label nicAlias ] #------------------------------------------------ 若新建了网卡别名并指派了 IP,如给 loopback 接口一个非 127 的 IP,需要手动建立一个别名网卡配置文件以永久生效 如: /etc/sysconfig/network-scripts/ifcfg-lo:#  注意:非 primary 地址不能使用 DHCP 动态获取IP,ONPARENT 字段设置是否随物理网卡激活,应设置为 yes ---------IP路由--------- ip route add destIPsegment/# dev nicName [metric # ]    // 无掩码则认为是主机路由;到同一目的可以添加两条路由, metric 不同即可 ip route add destIPsegment/# via nexthop [metric # ]      // 建议 dev 和 via 二选一,两个都给出万一对不上呢 ip route del destIPsegment    // 删除目的路由 ip route show [dev nicName ] [via prefix ] ip route flush [dev nicName ] [via prefix ]    // 清空指定路由表 ip route add default [dev nicName ] [via prefix ] ip route del default [dev nicName ] [via prefix ] =========== 网络状态查看 SS(dump socket statistics) ss [options] [FILTER] -----------------options---------------- 不加选项默认查看 established 状态的连接 -l  listen 状态的连接 -a  listen + established 状态的连接 -p  相关的程序及PID -n  数字格式    // 即不根据 port 去解析服务名 -t  tcp协议相关 -u  udp协议相关 -w  裸套接字相关 -x  unix sock相关 -e  扩展的信息 -m  内存用量 -o  show timer information  <--- 哪个 timer ? keepalive ? -s  summary,socket 信息汇总 -----------------FILTER--------------------- state TCP-STATE, 如:ss -a -t state fin-wait-1 [ expression ],如:ss -a -t dst 192.168.10.1 ==========一些老工具 =========== ifconfig ifconfig [INTERFACE] -a    显示所有接口的信息 ,不加 -a 则仅显示状态为up的端口信息 -s [eth#]    显示接口收发信息情况(含丢包),效果等同于下面的 netstat -Ieth# ifconfig eth1 192.168.1.1/8  <--- 手动配置地址 ifconfig eth1 [up|down]  立即生效,但重启网络服务后失效; ----------------------------------------- route   -n  所有地址均以数值方式显示(比如显示0.0.0.0而非default,可以和不加-n的对比下) <---  route -n 比 ip route show 要好一些 结果flags字段中常见标志的意思 U    route is up G    use gateway H    target is a host D    dynamically !     reject route 常见用法: route{add | del} [-host | -net] dev IF   <--- 还要指定 host 或 net ,太麻烦,所以建议用 ip route add route add -net 192.168.2.0 netmask 255.255.255.0 dev eth0 route del -net 192.168.2.0 netmask 255.255.255.0 route add -host 192.168.2.1 dev eth0 route del -host 192.168.2.1 ----------------------------------------- netstat -t    列出 tcp 网络数据包的数据 -u   列出 udp 网络数据包的数据 -n   列出进程端口号而非服务名称 -l    列出正在 listening 的服务(默认只显示连接的) -a    列出所有的服务 -p   列出网络服务的 PID -i   列出各个端口收发信息(效果等同于 ifconfig -s),-Ieth#  查看指定某个接口  lsof -i TCP:22 查看 TCP 22 端口哪个进程开的    // lsof 貌似很多地方用啊,list open file ================================================ 网络配置文件 ----------------------主机名---------------------- /etc/sysconfig/network    <--- CentOS6,补充:该文件下也可以定义 GATEWAY ,不过优先级低于 ifcfg-### 中指派的网关 NETWORKING=yes  HOSTNAME=os6.freeland       //主机名 /etc/hostname    <--- CentOS7 HOSTNAME=os7.freeland ----------------------网卡配置文件---------------------- /etc/sysconfig/network-scripts/ifcfg-##    <--- 该文件名可以随意,但是建议和设备名相同。系统读取该配置文件初始化网卡。系统启动后,重启network服务时,如果读不到某网卡的配置文件,则不会刷新系统中该网卡信息。如果系统启动时,读不到某网卡配置文件,则初始化失败。 DEVICE=  关联的设备,CentOS6上要与  /etc/udev/rules.d/70-persistent-net.rules 中的nicName保持一致 BOOTPROTO={static | none | dhcp | bootp}引导协议,要是用静态,可配置为static或none IPADDR=  METMASK= GATEWAY= DNS1= DNS2=    此处配置的 DNS server 信息会写入/etc/resolv.conf 中(如果PEERDNS 字段为 0 的话) ONBOOT=  是否自动激活此网络接口(当进程读取该配置文件时判断) PEERDNS={yes|no}  是否在BOOTPROTO为 dhcp 时接受有DHCP服务指定的DNS地址,即将 DNS server 信息写入/etc/resolv.conf 中 HWADDR=  硬件地址,要与硬件中的地址保持一致,可省略 <--- HWADDR 或 DEVICE 都能确定一个网卡,即如果有HWADDR,DEVICE可以省略 MACADDR=  系统中的 MAC 地址,测试发现改了并没有卵用,不生效 MTU= USERCTL={yes|no}  是否允许普通用户控制此接口 各个字段的含义见: /usr/share/doc/initscripts-***/sysconfig.txt ------------------------路由配置文件------------------------ /etc/sysconfig/network-scripts/route-eth#  <--- 新建的,系统本身不存在,而且名字 route-nicName 必须与真正的网卡名匹配,和ifcfg-xxx 不一样,不能随意指派。 添加格式0 DST/MASK dev nicName [metric #] 添加格式1 DST/MASK via NEXTHOP {metric #]   如:192.168.1.0/24      via     0.0.0.0 添加格式2      <--- 不支持 METRIC 到同一目的不能添加两条路由 ADDRESS0= NETMASK0= GATEWAY0= ADDRESS1= NETMASK1= GATEWAY1= ============================ ==== DNS服务器手工指定方法只有一种,即配置文件 /etc/resolv.conf  <--- service 或 NM 生成的,网卡配置文件也是这样 nameserver DNS_IP_1 nameserver DNS_IP_2 若无DNS,使用本地 hosts 文件 /etc/hosts 主机IP  主机名  主机别名 系统先查本地HOSTS,没有再查DNS,但是优先级可以改变,修改 /etc/nsswitch.conf 中如下字段 hosts:      files dns    <---  把 dns 放在前面即可 ====================================== 网卡 bonding 关于 bonding 的更多信息参考 /usr/share/doc/kernel-doc-###/Documentation/networking/bonding.txt,该文本文件随包 kernel-doc 安装 也可以去 www.kernel.org 找到,这里只简单介绍几种 bonding 模式 mode 0 即 round-robin,接口轮流发送数据包(注意是发送,接收的话由直连数通设备控制) mode 1 即 active-backup,主备模式 mode 3 即 broadcast,在所有 slave 接口上均发送数据,会出现 dup ----------Step 01---------- 创建 bonding 设备的配置文件 /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=none BONDING_OPTS="miimon=100 mode=1"    // miimon 表示检测间隔为 100ms ----------Step 02---------- 设置 bonding 成员的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no 设置 bonding 成员的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no ----------Step 03---------- service network restart 查看 bond0 运行状态, cat /proc/net/bonding/bond0 在 service network restart 之前执行 lsmod | grep 'bonding' 发现 bonding 模块并没有加载,重启 network 后执行 lsmod 发现该模块被加载,应该是 network 读到 ifcfg-bond0 后加载的 bonding 模块。ip add show 发现 bond0 已经获得 IP 并正常工作。 停用 bonding,先关闭 bond0,即 ip link set dev bond0 down,然后删除 bonding 模块,即 rmmod bonding(或 modprobe -r bonding)之后删除 ifcfg-bond0 配置文件(否则后续重启 network,还会读此文件,进而激活 bonding 模块)。 ========================={ CetnOS 7 nmlcli 简单用法总结}============================= CentOS 7 上网卡命名机制与 6 不同,为了统一网卡名称,可通过如下方式将 CentOS 7 上的网卡命名规则恢复至与 6 相同 /etc/default/grub 中  GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet" 中的 quiet 后加入 net.ifnames=0 然后执行 grub2-mkconfig -o /etc/grub2.cfg 生成 cfg 配置文件 或直接修改 cfg 文件  /etc/grub2.cfg(软链接至/boot/grub2/grub.cfg),在 inux16 /vmlinuz-3.10.0-514.el7.x86_64 root=UUID=f62eba08-f8ce-4cb4-b435-ad56e21ce    4db ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 这一行末添加 net.ifnames=0 在未清楚网卡命名机制之前,不建议回退到 CentOS6 式的命名  <---  CentOS7 上的命名机制需要找时间详细了解下 =========== nmcli(command-line tool for controlling NetworkManager) nmcli [OPTIONS] OBJECT COMMAND {ARGUMENTS} 常用 OBJECT 有 connection,device ,networking 常用 COMMAND 有 show,up,down,status,on,off, 具体常用用法如下: ----------connection--------- nmcli 可以配置多套网络(网卡)配置文件(称为 connections)用以初始化网络设置,但只能选择其中某一套生效,connections 对应着网卡配置文件,即 /etc/sysconfig/network-script/ifcfg-#  此配置文件的文件名中的 # 还是建议与网卡名对应(最好再与文件中的 NAME 字段对应好),且 强烈建议不要在配置文件中使用 DEVICE 指明是哪个网卡的配置文件,而唯一使用 HWADDR 指明之。配置文件中 NAME 可以重名(但强烈不建议给自己挖坑),但 UUID 是唯一标示该 connection 配置文件的,也就是表示一个网卡配置方案,如果两个配置文件的 UUID 相同,使用 nmcli conn show 只能显示得到一个。   nmcli conn show   <--- 查看所有的 connection 配置文件,结果中的 NAME 即配置文件中的 NAME 字段,取名时应取一个有意义的。 nmcli conn up id xxx    <--- 启用某 connection ,xxx 就是我们上面 show 出来的 NAME ,由于我们在配置文件中已经指明了 HWADDR,因此这里不用再指明对哪个接口启用此配置。 nmcli conn up uuid yyy    <--- 启用某 connection ,yyy 就是我们上面 show 出来的 UUID nmcli conn down id | uuid yyy    <---  down 掉一个 connection,ip add show dev nicName 可看到 IP 没了,链路还是 up 的(联想接口物理状态和 protocol 状态) nmcli 还提供了修改 网卡配置文件 的功能,可以通过 man 获得试用帮助,我们可以通过手动改,然后 reload 该文件。 nmcli conn load configFile    <---  reload/load 指定配置文件 nmcli conn reload    <--- reload 所有配置文件(ifcfg-*) -------------device------------ nmcli dev show  nmcli dev status nmcli dev disable nicName    <--- 和通过 nmcli conn down ,关掉 nicName 所有 connection 一个效果 -------------networking------------ nmcli networking {on | off}   <--- 使能/禁用网络功能 -------------nmcli 配置 bond------------ 添加bonding接口            <--- 配置完后会发现 /etc/sysconfig/network-script/ 下多了 bonding 的配置文件 nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup 添加从属接口 nmcli con add type bond-slave ifname ens5 master mybond0 nmcli con add type bond-slave ifname ens6 master mybond0 首先启动从属接口 nmcli con up bond-slave-ens5 nmcli con up bond-slave-ens6 启动绑定 nmcli con up mybond0 小结:重要的还是需要熟悉 /etc/sysconfig/network-script/ 下的配置文件 -------------nmcli 配置 team------------ team 是不同于 bond 的网卡聚合技术,待研究。 控制来自网络的链接 /etc/hosts.allow /etc/hosts.deny 只要不支持TCP Wrapper函数功能的软件程序就无法使用上述两个配置文件的设置值。可以通过  ldd(library dependency discovery)查询某程序是否有支持libwrap.so。 补充: ping,traceroute,mtr,tracepath 的使用 lftp,lftpget(非交互),wget 的使用 chkconfig 用法 dmesg ---> The  program  helps  users to print out their bootup messages arping 的原理补于此 防火墙 iptables -vnL  查看 iptables -F  关闭防火墙 os6上永久关闭防火墙 chkconfig iptables off os7上systemctl disable firewalld.service

 
转载请注明原文地址: https://www.6miu.com/read-42573.html

最新回复(0)