17---网络配置

来源:互联网 发布:淘宝网无法加入购物车 编辑:程序博客网 时间:2024/06/18 14:49

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






0 0
原创粉丝点击