一、tcp/ip基础
1、
unix/linux就是网络的世界,网络的基础就是tcp/ip
计算机间的交流,通过通讯协议,其中tcp/ip非常重要
tcp:传输控制协议,
ip:internt协议,
tcp/ip是网络互联的标准,它不是1个独立的协议,而是一组协议(tcp,ip,udp,arp,rarp等协议)
推荐看的书:
思帝文思写的3本书(关于网络安全的书,网络黑客)
TCP/IP详解:协议
TCP/IP详解:实现
TCP/IP详解:TCP事物协议 HTTP NNTP和UNIX协议
2、模型
OSI与Tcp/ip参考模型
应用层(application) 应用层(application)smtp,ftp,telnet
表现层(presention)
会话层(session)
传输层(transport) 传输层(transport),解释数据
网络层(ip) 网络层(ip),定位ip地址和确定连接路径
数据链路层(link) 数据链路层(link),与硬件驱动对话
物理层(physical)
OSI模型(理论上7层) Tcp/ip模型(现实上4层)
3、数据传输(以QQ为例)
TCP/IP层 QQ1 QQ2
输入”你好“,并改送给QQ2 你好
应用层 app|你好 app|你好
传输层 tcp|app|你好 tcp|app|你好
网络层 ip|tcp|app|你好 ip|tcp|app|你好
链路层 帧头|ip|tcp|app|你好|帧尾 帧头|ip|tcp|app|你好|帧尾
网卡 帧头|ip|tcp|app|你好|帧尾 帧头|ip|tcp|app|你好|帧尾
路由器..................................................
网关:(GETWAY)
首先‘网关’一个大概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关;
而‘路由器’么一般特指能够实现路由寻找和转发的特定类产品,路由器很显然能够实现网关的功能。当然电信行业说的‘路由器’又和家用的‘路由器’两个概念,这个暂且不表。
默认网关是什么,
默认网关事实上不是一个产品而是一个网络层的概念,PC本身不具备路由寻址能力,所以PC要把所有的IP包发送到一个默认的中转地址上面进行转发,也就是默认网关。这个网关可以在路由器上,可以在三层交换机上,可以在防火墙上,可以在服务器上,所以和物理的设备无关。
路由:(ROUTER)
网关是默认的数据出口。
如果你的数据不知道往哪里走的话,那么他会去默认网关那里报道。
路由器包含许多这样的网关,其中之一是默认网关。也就是说数据到了路由器以后,如果不知道自己下一步该怎么走了,那么他会去默认网关那里去报道。
但路由器还包含许多其他的网关,
比如数据要去买饮料,那么路由器就送数据去小卖铺。
如果数据内急,那么路由器送数据去卫生间。
这种起点-终点的对应就叫路由(routing)。这也是路由器(router)名字的由来
4、IP地址与包的路由传递
1)IP地址:每个internet上的主机和路由器都有1个ip地址,32位,划分为a,b,c,d,e共5类
网络号(网段号)+主机号
假如网络号:用x表示
主机号:用y表示
00000000.00000000.00000000.00000000 共32位
2^10=1024
2^9=512
2^8=256
2^7=128
2^6=64
2^5=32
2^4=16
2^3=8
2^2=4
2^1=2
2^0=1
a类:0xxxxxxx.yyyyyyyy.yyyyyyyy.yyyyyyyy 从00000001.00000000.00000000.00000000
至01111111.11111111.11111111.11111111
0|7位网络号|主机号 1.0.0.0至127.255.255.255
b类:10xxxxxx.xxxxxxxx.yyyyyyyy.yyyyyyyy
10|14位网络号|主机号 128.0.0.0至191.255.255.255
c类:110xxxxx.xxxxxxxx.xxxxxxxx.yyyyyyyy
110|21位网络号|主机号 192.0.0.0至223.255.255.255
d类:1110xxxx.xxxxxxxx.yyyyyyyy.yyyyyyyy
1110|多点播送地址 224.0.0.0至239.255.255.255
e类:11110xxx.yyyyyyyy.yyyyyyyy.yyyyyyyy
11110|留作将来用 240.0.0.0至255.255.255.255
速记,ABCDE类,0,10,110,1110,11110,
ABCDE分为以1,128,192,224,240开始
2)几个特殊的IP地址
11111111.11111111.11111111.11111111 局域网广播
网络号+主机号全是1 对1个子网广播
win下,使用以下命令对192.168网段所有主机发送“不要玩LOL”
netsend "不要玩LOL" 192.168.255.255
127+任意值(除去全0或全1) 回路(本机)
3)
ip 32位,网络号+主机号
子网掩码 通常是255.255.255.0
与ip进行and运算,结果就是网络号,主要是确定网络号,网段号,判断不同ip是否在同一网段
广播地址 所描述的网段中最后1个主机ip地址+1,通常直接写x.x.x.255
默认网关 所描述的网段中的1个特殊的ip地址,
些网段中所有主机,要访问网段外的ip,都要通过些网关,通常说的都是默认网关,也可以指定特有网关,当指定的网关不可用时,会指定默认网关
netstat -anp|more 比较常用,全面
netstat -n 查看所有连接情况 (以ip地址等数字形式,比较直观)
netstat -a 查看所有连接情况
netstat -t 查看tcp连接情况
netstat -u 查看udp连接情况
netstat -l 查看处于监听状态的连接情况
netstat -s 统计协议所有连接信息
netstat -r 查看网关,也就是查看路由
route -n 查看网关,也就是查看路由
netstat -i 查看系统的网络接口列表
netstat -ie 查看系统的网络接口的地址信息(相当于ifconfig)
ip addr (centos7中)查看系统的网络接口的地址信息(相当于ifconfig),
二、linux网络环境配置
网络连接:
桥接
允许客户机系统直接访问1个外部以太网网络,在外部网络中,客户机必须拥有自己的IP地址
有独立的IP访问外部网络
虚拟机同所有机器都能互访
NAT
允许客户机系统使用主机的IP地址访问主机电脑的拨号或外部以太网网络
用主机的IP访问外部网络
虚拟机可以访问主机和网络中的其它主机
Host-only
使用1个私有的的虚拟网络 将客户机系统与主机电脑蚝连接
不能访问外部网络,只能和主机通信
iptables -F 关闭防火墙
service network restart 重启网络服务
1、第一种方法
1)用root登陆,
centos7:
运行nmtui命令进入设置网络,对不同的网卡设置ip、子网掩码等
centos7以前:
setup命令设置
2)运行service network restart 重启网络服务,设置立马生效
或运行/etc/rc.d/init.d/network restart命令后,设置立马生效
2、第二种方法
1)ifconfig 网卡名 x.x.x.x 对网卡的ip进行设置
2)ifconfig 网卡名 network x.x.x.x 对子网掩码进行设置
对广播地址和dns使用默认的
注意:这种配置网络将立马生效,但是临时生效,重启后无效
3、第三种方法
1)修改/etc/sysconfig/network-scripts/ifcfg-网卡名 里面的值
2)运行service network restart 重启网络服务,设置立马生效
或运行/etc/rc.d/init.d/network restart命令后,设置立马生效
这种方法是最底层的修改方法
在linux中,所有的设备都是文件
修改网络配置 cd /etc/sysconfig/network-scripts
运行ls命令会看到 ifcfg-enp4s0(每台电脑都不一样,我安装的另一台就是ifcfg-eno1,前半部分ifcfg-en是不变的)然后运行
vi ifcfg-enp4s0
TYPE=Ethernet
BOOTPROTO=dhcp(自动获取ip,none手动,static静态ip)
DEFROUTE=yes
PEERDNS=yes
...
NAME=enp4s0
ONBOOT=no(开机不启动)
可以修改成
BOOTPROTO=static
ONBOOT=yes(开机启动)
IPADDR=x.x.x.x(此处到DNS都是手动添加的,dhcp下就不用手动添加)
NETMASK=255.255.255.0(B子网掩码)
GATEWAY=192.168.1.1(网关,路由,也可设置其它)
DNS1=192.168.1.1
也可用谷歌的DNS,比较好记,如下
DNS2=8.8.8.8或者
DNS2=8.8.4.4
查看DNS地址
cat /etc/resolv.conf
显示 nameserver 192.168.1.1
重启网络
systemctl restart network
最好的办法就是使用两块网卡,nat(虚拟机访问互联网,使用10.0.2.x段)和host-only(虚拟机和主机互相通信,使用 192.168.56.x段),而virtualbox配置的网络的地方是:打开主机界,按Ctrl+G,然后network,就可以启用 vboxnet0了。
打开虚拟机的配置,在networking里面添加第二块网卡为host-only。
接下来在virtualbox中安装centos。
ping baidu,不通,需要在/etc/sysconfig/network-scripts/ifcfg-eth0中将ONBOOT="no"改为yes, 再添加BOOTPROTO="dhcp",保存,退出,重启。再ping 百度,通了。此时可以用命令route看一下,记录一下路由,如果后面出现不能上网,再用route看一下什么异常
再ping主机上的虚拟网卡192.168.56.1,发现也没有问题,是通的,但是主机访问不了虚拟机,这就头痛了,这个时候就要用到我们的第二块网卡host-only来完成主机对虚拟机的访问。操作如下:
在/etc/sysconfig/network-scripts/下面看有没有ifcfg-eth1文件,如果没有,将ifcfg-eth0复制一份,改名为ifcfg-eth1,然后将ONBOOT值改为yes,这里我设置成静态IP,配置如下:
BOOTPROTO=static #获取IP的方式是dhcp或bootp自动获取,static是固定IP,none是手动
IPADDR=192.168.56.2
NETMASK=255.255.255.0
注意不能设置GATEWAY,原因:
linux双网卡默认路由问题
在 安装第二块网卡后出现无法上网问题,使用route发现是默认路由出现问题,经过多 发查证,才晓得原来linux在加载网卡配置文件的时候是先加载eth0,再加载eht1的,这样,如果eth1设置了gateway项,则会覆盖掉 eth0中的gateway设置,因此解决方法就是删除eth1的gateway设置
centos7 关闭SELINUX 防火墙
关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
selinux的使用(需深入)
一、查看SELinux状态命令:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
二、关闭SELinux方法:
1、临时关闭(不用重启机器):
setenforce 0 #设置SELinux 成为permissive模式
setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可