Linux网络相关
ifconfig命令查看网卡IP
刚接触linux系统开始的时候我们学习到查看网卡IP方式是使用ip addr,而ifconfig命令和ip addr命令的结果是相似的,如果系统里没有ifconfig命令,安装即可;
[root@kvm ~]# yum install -y net-tools
在linux下修改ip需要进入到/etc/sysconfig/network-scripts/目录下面修改相关的网卡文件即可,比如;
[root@kvm ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
在linux上有多个网卡,而你只想重启某个网卡的时候,可以使用以下操作;
[root@kvm ~]# ifdown ens33; ifup ens33
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@kvm ~]# ifdown ens33 && ifup ens33
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
由于是远程登录的,所以在使用ifdown的时候需要谨慎,不要单独使用ifdown。
给一个网卡设定多个ip
[root@kvm ~]# cd /etc/sysconfig/network-scripts/ //先到网卡配置文件的目录下
[root@kvm network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:1 //拷贝一个ens33文件名并重命名为ens33:1 这里用到反斜杠使用脱义
然后开始编辑ens33:1文件即可,修改NAME和DEVICE 为ens33:1 设定一个IPADDR地址保存并退出,重启网卡即可
这个时候在ifconfig查看就可以看到多了一个网卡
查看网卡连接状态
[root@localhost network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
这里显示link ok,就说明网卡为连接状态,如果显示no link,说明网卡存在坏了或者没有连接网线的情况,除了这个mii-tool命令外还有一个命令也可以查看;
[root@localhost network-scripts]# ethtool ens33
如果网卡没有连接成功,最后面一行link detected显示为no。
更改主机名
使用hostname命令可以查看主机名,hostname命令后面跟一个自定义的名字则是临时修改主机名,重启后无效
[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname hch
想要永久改主机名,执行以下命令修改
[root@localhost ~]# hostnamectl set-hostname hch
[root@localhost ~]# bash
修改后重新登录即可看到变化
设置DNS
在linux下设置DNS非常简单,只要把DNS地址写入配置文件即可
[root@hch ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 119.29.29.29
在linux下还有一个特殊文件/etc/hosts也能解析域名
[root@hch ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
使用Vim编辑该文件,增加一行10.2.33.71 www.baidu.com,保存后再ping以下www.baidu.com就会连接到10.2.33.71
[root@hch ~]# vi /etc/hosts
[root@hch ~]# ping www.baidu.com
PING www.baidu.com (10.2.33.71) 56(84) bytes of data.
64 bytes from www.baidu.com (10.2.33.71): icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from www.baidu.com (10.2.33.71): icmp_seq=2 ttl=64 time=0.060 ms
hosts文件格式很简单,注意以下几点;
* 一个ip后面可以跟多个域名,可以是几十个甚至上百个;
* 每一行只能有一个ip,也就是说一个域名不能对应多个ip;
* 如果有多行中出现相同的域名(对应的ip不一样),就会按最前面出现的记录来解析
firewalld和netfilter
linux的防火墙
SELinux是linux系统特有的安全机制。因为这种机制的限制太多,配置也繁琐,所以几乎没有人真正的应用它,安装玩系统我们一般都把SELinux关闭,以免引起不必要的麻烦,临时关闭的犯法;
[root@hch ~]# setenforce 0
永久关闭的方法,需要更改配置文件/etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled保存并退出即可,重启系统后生效,此处切记不要改作地方以免照成系统无法开机。
[root@hch ~]# vi /etc/selinux/config
[root@hch ~]# getenforce //修改好重启系统后可以使用该命令查看selinux防火墙状态
Disabled
netfilter是在Centos7之前使用的防火墙,Centos7使用的是firewalld,由于大部分公司还是使用Centos6的情况,我们可以先通过之前版本的iptables了解和学习,firewalld和netfilter 使用的命令同样支持的,意味这两者兼容。
因此我们先关闭firewalld后再开启netfilter ,操作如下;
[root@hch ~]# systemctl stop firewalld //关闭firewalld服务
[root@hch ~]# 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@hch ~]# yum install -y iptables-services //安装iptables-services ,使之前的版本可以使用(即netfilter )
[root@hch ~]# systemctl enable iptables //让服务开机启动
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.
[root@hch ~]# systemctl start iptables //启动iptables服务
到此就设置好了,可以使用之前版本的iptables了
使用以下命令可以查看规则;
[root@hch ~]# iptables -nvL
netfilter5表5链介绍
netfilter的5个表
filter:表主要用于过滤包,是系统预设的表,该表内建3个链:INPUT、OUTPUT以及FORWARD。INPUT链作用于进入本机的包,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:发送到网卡接口之前
iptables语法
查看iptables默认规则配置文件:
[root@hch ~]# cat /etc/sysconfig/iptables
查看iptables默认规则:
[root@hch ~]# iptables -nvL
保存iptables规则(当前规则,保存到配置文件):
[root@hch ~]# service iptables save
清空iptables规则:
[root@hch ~]# iptables -F
重启iptables规则:
[root@hch ~]# service iptables restart
指定表:
[root@hch ~]# iptables -t nat -nvL
[root@hch ~]# iptables -t filter -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:表示指定网卡