Linux网络相关

ifconfig命令查看网卡IP
刚接触linux系统开始的时候我们学习到查看网卡IP方式是使用ip addr,而ifconfig命令和ip addr命令的结果是相似的,如果系统里没有ifconfig命令,安装即可;

[root@Ask-02 ~]# yum install -y net-tools

在linux下修改ip需要进入到/etc/sysconfig/network-scripts/目录下面修改相关的网卡文件即可,比如;

[root@Ask-02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

在linux上有多个网卡,而你只想重启某个网卡的时候,可以使用以下操作;

[root@Ask-02 ~]# ifdown ens33; ifup ens33
或者
[root@Ask-02 ~]# ifdown ens33 && ifup ens33

由于是远程登录的,所以在使用ifdown的时候需要谨慎,不要单独使用ifdown

给一个网卡设定多个ip

[root@Ask-02 ~]# cd /etc/sysconfig/network-scripts/ //先到网卡配置文件的目录下
[root@Ask-02 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1 //拷贝一个ens33文件名并重命名为ens33:1 这里用到反斜杠使用脱义

然后开始编辑ens33:1文件即可,修改NAMEDEVICEens33:1 设定一个IPADDR地址保存并退出,重启网卡即可
这个时候在ifconfig查看就可以看到多了一个网卡

查看网卡连接状态

[root@Ask-02 ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

这里显示link ok,就说明网卡为连接状态,如果显示no link,说明网卡存在坏了或者没有连接网线的情况,除了这个mii-tool命令外还有一个命令也可以查看;

[root@Ask-02 ~]# ethtool ens33
Settings for ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes

如果网卡没有连接成功,最后面一行link detected显示为no

更改主机名

使用hostname命令可以查看主机名,hostname命令后面跟一个自定义的名字则是临时修改主机名,重启后无效

[root@Ask-02 ~]# hostname
Ask-02
[root@Ask-02 ~]# hostname Ask-03**

想要永久改主机名,执行以下命令修改

[root@Ask-02 ~]# hostnamectl set-hostname Ask-03

修改后重新登录即可看到变化

设置DNS

在linux下设置DNS非常简单,只要把DNS地址写入配置文件即可

[root@Ask-02 ~]# cat /etc/resolv.conf
·# Generated by NetworkManager
nameserver 119.29.29.29
[root@Ask-02 ~]# vi /etc/resolv.conf
[root@Ask-02 ~]# cat /etc/resolv.conf
·# Generated by NetworkManager
nameserver 119.29.29.29
nameserver 8.8.8.8

在linux下还有一个特殊文件/etc/hosts也能解析域名

[root@Ask-02 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

使用Vim编辑该文件,增加一行192.168.135.133 www.baidu.com,保存后再ping以下www.baidu.com就会连接到192.168.135.133

[root@Ask-02 ~]# vim /etc/hosts
[root@Ask-02 ~]# ping -c 2 www.baidu.com
PING www.baidu.com (192.168.135.133) 56(84) bytes of data.
64 bytes from www.baidu.com (192.168.135.133): icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from www.baidu.com (192.168.135.133): icmp_seq=2 ttl=64 time=0.370 ms

--- www.baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.045/0.207/0.370/0.163 ms

hosts文件格式很简单,注意以下几点;

* 一个ip后面可以跟多个域名,可以是几十个甚至上百个;
* 每一行只能有一个ip,也就是说一个域名不能对应多个ip;
* 如果有多行中出现相同的域名(对应的ip不一样),就会按最前面出现的记录来解析

firewalld和netfilter

linux的防火墙

SELinux是linux系统特有的安全机制。因为这种机制的限制太多,配置也繁琐,所以几乎没有人真正的应用它,安装玩系统我们一般都把SELinux关闭,以免引起不必要的麻烦,临时关闭的犯法;

[root@Ask-02 ~]# setenforce 0

永久关闭的方法,需要更改配置文件/etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled保存并退出即可,重启系统后生效,此处切记不要改作地方以免照成系统无法开机。

[root@Ask-02 ~]# vi /etc/selinux/config
[root@Ask-02 ~]# getenforce //修改好重启系统后可以使用该命令查看selinux防火墙状态
Disabled

netfilter是在Centos7之前使用的防火墙,Centos7使用的是firewalld,由于大部分公司还是使用Centos6的情况,我们可以先通过之前版本的iptables了解和学习,firewalldnetfilter 使用的命令同样支持的,意味这两者兼容。
因此我们先关闭firewalld后再开启netfilter ,操作如下;

[root@Ask-02 ~]# systemctl stop firewalld //关闭firewalld服务
[root@Ask-02 ~]# systemctl disable firewalld //禁止firewalld服务开机启动
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@Ask-02 ~]# yum install -y iptables-services //安装iptables-services ,使之前的版本可以使用(即netfilter )
[root@Ask-02 ~]# systemctl enable iptables //让服务开机启动
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[root@Ask-02 ~]# systemctl start iptables //启动iptables服务

到此就设置好了,可以使用之前版本的iptables
使用以下命令可以查看规则;

[root@Ask-02 ~]# iptables -nvL

netfilter5表5链介绍

netfilter的5个表
filter:表主要用于过滤包,是系统预设的表,该表内建3个链:INPUT、OUTPUT以及FORWARDINPUT链作用于进入本机的包,OUTPUT链作用于本机送出的包,FORWARD链作用于那些跟本机无关的包。
nat:表主要用于网络地址转换,同样也有3个链,PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址。该表阿铭仅偶尔会用到。
mangle:表主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用
raw:表可以实现不追踪数据包做标记,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源,所以可以用raw表来指定某些端口的包不被追踪。
security:表在Centos6里是没有的,它用于强制访问控制(MAC)的网络规则。

netfilter的5个链
5个链分别为PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTING:发送到网卡接口之前

参考图
firewalld和netfilter、netfilter5表5链介绍、iptables语法
firewalld和netfilter、netfilter5表5链介绍、iptables语法

iptables语法

查看iptables默认规则配置文件:

[root@Ask-02 ~]# cat /etc/sysconfig/iptables

查看iptables默认规则:

[root@Ask-02 ~]# iptables -nvL

保存iptables规则(当前规则,保存到配置文件):

[root@Ask-02 ~]# service iptables save

清空iptables规则:

[root@Ask-02 ~]# iptables -F

重启iptables规则:

[root@Ask-02 ~]# service iptables restart

指定表:

[root@Ask-02 ~]# iptables -t nat -nvL
[root@Ask-02 ~]# iptables -t filter -nvL

把表的计数器清零:

[root@Ask-02 ~]# iptables -nvL

如果不加-t,则默认的是filter

  • -A/-D:表示增加/删除一条规则
  • -I:表示插入一条规则其实效果跟-A一样
  • -p:表示指定协议,可以是tcp、udp或者icmp
  • --dport:跟-p一起使用,表示指定目标端口
  • --sport:跟=p一起使用,表示指定源端口
  • -s:表示指定源IP(可以是一个IP段)
  • -d:表示指定目的IP(可以是一个IP段)
  • -j:后面跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包
  • -i:表示指定网卡