linux基础之网络管理


linux处理数据包的过程:
当外界主机发送数据的时候,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转发给其他主机,如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接收处理)。
如果是流入本机的,那么用户空间会对流入的数据进行响应,也就是应用程序生成新的数据,在响应包流出之前,需要作出路由决策,根据目标决定从哪个网卡流出。
如果不是流入本机的,而是要转发到其他主机,则必然涉及到到另一个流出网卡,此时数据包必须完整的从流入网卡转发到流出网卡,这要求linux主机可以完成这样的转发。但是linux主机默认未开启ip_forward功能,这使得数据包无法被转发而被丢弃。
要注意:linux主机和路由器是不同的,路由器是可以直接通过不同的网卡进行数据转发的,而linux主机流入的数据必须进入内核空间。而由于内核ip_forward功能默认没有开启,那么linux主机默认不能转发。


ip地址是属于内核的,不仅如此,整个tcp/ip协议栈都是属于内核的,包括端口号。那么,如果外界的主机可以和其中一个ip通信,那么它进可以和其他ip通信,因为这ip都在内核中。假如,一个主机有两块网卡eth0:172.25.10.1 和 eth1: 192.168.10.1 ,而外界主机192.168.10.2的主机网关指向eth1,那么外界主机ping eth0网卡的ip是可以ping通的,因为数据包会从eth1进入内核,会被内核分析,内核分析目标地址为本机地址,直接就回应外界主机,数据通过eth1流向外界主机。
这个例子是,当linux主机开启内核转发功能时候的情况,而没有开启转发功能的linux内核,不同网卡之间是无法跨越网端进行通信。

那么,怎样开启linux内核转发功能呢?

linux中开启内核的路由转发功能有多种方法:

shell> echo 1 > /proc/sys/net/ipv4/ip_forward
shell> sysctl -w net.ipv4.ip_forward=1

以上两种方法是临时生效的,而要永久生效,则需要写入配置文件中。

。在CentOS 6中,将/etc/sysctl.conf文件中的"net.ipv4.ip_forward"值改为1即可,但在CentOS 7中,systemd管理了太多的功能,sysctl的配置文件也分化为多个,包括/etc/sysctl.conf、/etc/sysctl.d/.conf和/usr/lib/sysctl.d/.conf,并且这些文件中默认都没有net.ipv4.ip_forward项。当然,直接将此项写入到这些配置文件中也都是可以的,建议写在/etc/sysctl.d/*.conf中,这是systemd提供自定义内核修改项的目录。例如:

shell> echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf

使用以下两种方法查看是否开启内核的路由转发功能

[root@localhost tmp]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@localhost tmp]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
[root@localhost tmp]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost tmp]# sysctl net.ipv4.ip_forward

和网络相关的配置文件说明

1、网卡配置文件
通常,我们在/etc/sysconfig/network-scripts这个目录下会发现许多文件,这些文件大多数都是脚本文件,而以ifcfg-xxx为名字的就是网卡配置文件,而xxx时可以随意命名的。

[root@localhost net]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eth0   ifdown-isdn      ifdown-tunnel  ifup-isdn    ifup-Team
ifcfg-lo     ifdown-post      ifup           ifup-plip    ifup-TeamPort
ifdown       ifdown-ppp       ifup-aliases   ifup-plusb   ifup-tunnel
ifdown-bnep  ifdown-routes    ifup-bnep      ifup-post    ifup-wireless
ifdown-eth   ifdown-sit       ifup-eth       ifup-ppp     init.ipv6-global
ifdown-ippp  ifdown-Team      ifup-ippp      ifup-routes  network-functions
ifdown-ipv6  ifdown-TeamPort  ifup-ipv6      ifup-sit     network-functions-ipv6
[root@localhost network-scripts]# cat ifcfg-eth0 
DEVICE=eth0           #在此处的名字必须在/sys/class/net下存在
BOOTPROTO=none
IPADDR=172.25.4.1
ONBOOT=yes
PREFIX=24
[root@localhost tmp]# cd /sys/class/net
[root@localhost net]# ls
eth0  lo

2、DNS配置文件/etc/resolv.conf,全局的
nameserver ip 设置dns指向最多3个

[root@ivans net]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0
NAME="Bridge enp4s0f1"
ONBOOT=yes
BOOTPROTO=none
IPADDR0=172.25.254.4
PREFIX0=24
DEFROUTE=yes
IPADDR1=172.25.4.250
PREFIX1=24
DNS1=172.25.254.250
DOMAIN="ilt.example.com example.com"
IPV6INIT=no
PEERNTP=no
TYPE=Bridge
STP=no
IPV4_FAILURE_FATAL=no

注意,在这个文件上,dns1上开始添加dns服务器
3、/etc/services
该文件记录的是端口和服务的对应关系

[root@ivans net]# grep '^ftp\|^ssh' /etc/services 
ftp-data        20/tcp
ftp-data        20/udp
ftp             21/tcp
ftp             21/udp          fsp fspd
ssh             22/tcp                          # The Secure Shell (SSH) Protocol
ssh             22/udp                          # The Secure Shell (SSH) Protocol
ftp-data        20/sctp                 # FTP
ftp             21/sctp                 # FTP
ssh             22/sctp                 # SSH
ftp-agent       574/tcp                 # FTP Software Agent System
ftp-agent       574/udp                 # FTP Software Agent System
sshell          614/tcp                 # SSLshell
sshell          614/udp                 #       SSLshell
ftps-data       989/tcp                 # ftp protocol, data, over TLS/SSL
ftps-data       989/udp                 # ftp protocol, data, over TLS/SSL
ftps            990/tcp                 # ftp protocol, control, over TLS/SSL
ftps            990/udp                 # ftp protocol, control, over TLS/SSL
ssh-mgmt        17235/tcp               # SSH Tectia Manager
ssh-mgmt        17235/udp               # SSH Tectia Manager

网络接口配置和主机名
1、ifcfonfig,更多的是被显示已激活的网络接口信息
ifconfig 默认显示所有网络接口的状态
ifconfig eth1/lo显示具体某个网络接口的状态信息
ifconfig eth1 up 激活该网络接口
ifconfig eth1 down 临时down掉eth1接口

2、hostname 用于设置主机名
hostname newname用于临时设置主机名
此时,会修改/proc/sys/kernel/hostname 这个文件,仅仅是临时修改主机名,此时不用重启,ssh连接该主机会显示主机名已经修改了。
/etc/hostname 这个文件是永久修改主机名
hostname -I 获取本机所有非环回的ip地址
hostname -f 获取fqdn
fqdn 是全限定域名,同时带有主机名和域名,用 . 隔开
全限定域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名地一种完全表示方式。

[root@ivans net]# hostname -I
192.168.1.135 172.25.254.4 172.25.4.250 192.168.122.1 fd7d:236:4765::b01 fd7d:236:4765:0:21e:64ff:feec:8943 
[root@ivans net]# cat /etc/hostname
ivans
[root@ivans net]# cat /proc/sys/kernel/hostname 
ivans
[root@ivans net]# hostname cc
[root@ivans net]# cat /proc/sys/kernel/hostname 
cc


网关路由

linux

你可能感兴趣的:(linux基础之网络管理)