Linux 环回网络接口

在开发或者调试时,我们经常需要和本地的服务器进行通信,例如启动nginx之后,在浏览器输入lcoalhost或者127.0.0.1就可以访问到本机上面的http服务。 Linux是如何访问本机IP的? 大多数操作系统都在网络层实现了环回能力,通常是使用一个虚拟的环回网络接口来实现。这个虚拟的环回网络接口看着像是一个真实的网卡,实际上是操作系统用软件模拟的,它可以通过TCP/IP与同一台主机上的其他服务进行通信,以127开头的IPv4地址就是为它保留的,主流Linux操作系统为环回网卡分配的地址都是127.0.0.1,主机名是localhost。 环回网络接口之所以被称之为环回网络接口,是因为从本机发送到本机任意一个IP的数据报文都会在网络层交给环回网络接口,不再下发到数据链路层进行处理,环回网络接口直接发送回网络层,最终交由应用层软件程序进行处理。这种方式对于性能测试非常有用,因为省去了硬件的开销,可以直接测试协议栈软件所需要的时间。 那环回网络接口是如何判断目的IP是否为本机地址的呢? 答案就是网络层在进行路由转发的时候会先查本地的路由表,发现是本机IP后交给环回网络接口。查看本地路由表的命令如下: ip route show table local 输出内容如下: broadcast 10.141.128.0 dev eth0 proto kernel scope link src 10.141.155.131 local 10.141.155.131 dev eth0 proto kernel scope host src 10.141.155.131 broadcast 10.141.191.255 dev eth0 proto kernel scope link src 10.141.155.131 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127....

January 28, 2021 · 1 分钟 · dushixiang

Linux 修改最大文件描述符

echo "fs.file-max=655350" >>/etc/sysctl.conf echo "* soft nofile 655350" >> /etc/security/limits.conf echo "* hard nofile 655350" >> /etc/security/limits.conf ulimit -n 655350

January 11, 2021 · 1 分钟 · dushixiang

压缩qcow2 镜像文件

压缩qcow2 首先,需要对虚拟机剩余空间进行写零操作: dd if=/dev/zero of=/zero.dat 删除 zero.dat: rm /zero.dat 关闭虚拟机,执行qemu-img的convert命令进行转换: qemu-img convert -c -O qcow2 /path/old.img.qcow2 /path/new.img.qcow2

December 31, 2020 · 1 分钟 · dushixiang

Open vSwitch 入门实践(6)VXLAN实验

什么是VXLAN? VXLAN是一种隧道封装协议,在三层网络上封装二层网络数据报文。简单来说就是可以在已经规划好网络拓扑的设备上封装出一个新的二层网络,因此VXLAN这类网络又被称之为overylay网络,底下承载VXLAN网络的就被称之为underlay网络。 VXLAN解决了什么问题? 最近几年,阿里云,腾讯云,京东云,华为云等等厂商每到节日都会打折出售大量云服务器,1核1G内存50G磁盘的服务器几十块就能买到一年的使用权,作为一个专业的羊毛党,哪个手里没有几台小破水管机器?但是这么多的云服务器是厂商如何做隔离的呢?了解过网络的同学或许会说VLAN。但是VLAN这种只能隔离4094个虚拟网络的技术别说满足不了羊毛党了,就连正常的用户估计都撑不住。那不隔离能行吗,厂商规划一个特别大的网段,让大家都在这里面耍,正常用户还好,万一这个时候进来一个大黑客,估计就会全部GG。 因此,隔离是必不可少的,其中关键的技术就是overlay网络。 那VXLAN具体解决了哪些问题呢? 突破了VLAN技术4094个隔离网络的限制,在一个管理域中创建多达1600万个VXLAN网络。 VXLAN提供了云服务厂商所需的规模的网络分段,以支持大量租户。 突破了物理网络边界的限制,传统虚拟二层网络(VLAN)是需要和物理网络做大量适配工作才能保证环境的迁移不会导致虚拟网络异常,overlay网络则不必关心底层物理网络是如何搭建的,只要能保证VXLAN端点相互之间可以联通即可。 VXLAN网络如何工作? VXLAN隧道协议将二层以太网帧封装在三层UDP数据包中,使用户能够创建跨物理三层网络的虚拟化二层子网或网段。每个二层子网使用VXLAN网络标识符(VNI)作为唯一标识。报文格式如下图: 执行数据包封装和解封装的实体称为VXLAN隧道终结点(VTEP)。VTEP主要分为两类:硬件VTEP和软件VTEP。硬件VTEP我接触较少,这里就不再介绍了。 软件VTEP如下图所示:VTEP在数据包到达虚拟机之前进行了封装和解封装,使得虚拟机完全不需要知道VXLAN隧道以及它们之间的三层网络。 简单VXLAN实验 我们参照下图完成实验。 主机A # 创建隧道网桥 ovs-vsctl add-br br-tun # 创建隧道端口并指定远端IP和VXLAN ID ovs-vsctl add-port br-tun vx01 -- set Interface vx01 type=vxlan options:remote_ip=192.168.123.232 options:key=1111 # 创建内部端口 ovs-vsctl add-port br-tun vnet0 -- set Interface vnet0 type=internal # 创建netns用于模拟虚拟网络设备 ip netns add ns0 # 将内部端口移动到netns中 ip link set vnet0 netns ns0 # 启动网卡 ip netns exec ns0 ip link set lo up ip netns exec ns0 ip link set vnet0 up # 配置IP ip netns exec ns0 ip addr add 192....

December 30, 2020 · 2 分钟 · dushixiang

Open vSwitch 入门实践(5)OVS Flow Table 流表规则

OpenvSwitch flow table 流表 OpenFlow(OF)被认为是第一个软件定义网络(SDN)标准之一。它最初在SDN环境中定义了通信协议,使SDN控制器能够与物理和虚拟的交换机和路由器等网络设备的转发平面直接进行交互,从而更好地适应不断变化的业务需求。 如果把OpenFlow控制器比作“大脑”,OVS流表就像是“大腿”一样接受来自“大脑”的指令,决定要向哪个方向前进。但OVS流表功能更加强大,在没有OpenFlow控制器时,也可以自主工作,它本身也供一些命令让我们可以直接管理流表。 操作命令 查看流表规则 # 查看br-tun上的全部流表规则 ovs-ofctl dump-flows br-tun 添加或修改流表规则 ovs-ofctl add−flow/add−flows/mod−flows “流表匹配条件,actions=[动作1][,动作2…]” 如果你有过编程的经验,流表规则其实就是一个个简单的if语句,伪代码如下。 if (流表匹配条件){ 动作1, 动作2... } if (流表匹配条件){ 动作1, 动作2... } 删除流表规则 # 删除br-tun上的全部流表规则 ovs-ofctl del-flows br-tun # 删除br-tun上匹配xx的全部流表规则 ovs-ofctl del-flows br-tun xx 流表匹配条件 OVS 流表匹配条件较多,下面我将其分成四部分来说明,分别是: OVS匹配条件 OSI模型第二层【数据链路层】 OSI模型第三层【网络层】 OSI模型第四层【传输层】 OVS匹配条件 in_port=port 流量进入的端口编号或者名称,示例 in_port=br-int table=number 规则保存的流表编号,范围是 0-254,默认值:0。 OSI模型第二层【数据链路层】 dl 即是 data link 的缩写。 dl_type=ethertype 匹配以太网协议类型以太类型,以10到65535之间的整数(包括0和65535)指定,以十进制或以0x前缀的十六进制数表示,示例如下。 dl_type=0x0800 匹配IPv4数据包,等同于dl_type=ip 。...

December 29, 2020 · 3 分钟 · dushixiang