网络基础
大约 7 分钟
一、网桥
- 网络设备,连接多个网络。
- 转发不同网络之中的数据流。
- 工作在OSI模型的第二层:数据链路层,通过物理地址(MAC地址)识别网络设备来传递数据包
可以减少网络冲突
二、网段
- 网络地址范围 (表示方式:IP地址和子网掩码)
- 同一网段的设备可互相通信,不同网段需要路由器等设备才可痛心
三、iptable是什么
- 一个防火墙工具
- 控制网络数据包的流动
四、iptable基本用法
# 添加一个规则,允许 TCP:80端口 输入流量
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 查看规则
$ iptables -L
# eth0 接口的地址转换为 NAT 地址
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
五、iptable的NAT是什么意思
- NAT表示网络地址转换
- 将私有IP地址映射到公共IP地址的技术
六、怎么解读 iptables -nL -t nat (列出NAT表格转发规则)
[root@i-C5B261D3 ~]# iptables -nL -t nat
(规则链) Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
KUBE-POSTROUTING all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */
LIBVIRT_PRT all -- 0.0.0.0/0 0.0.0.0/0
(规则链) Chain KUBE-KUBELET-CANARY (0 references)
target prot opt source destination
(规则链) Chain KUBE-MARK-DROP (0 references)
target prot opt source destination
MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x8000
(规则链) Chain KUBE-MARK-MASQ (0 references)
target prot opt source destination
MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK or 0x4000
(规则链) Chain KUBE-POSTROUTING (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0 mark match ! 0x4000/0x4000
MARK all -- 0.0.0.0/0 0.0.0.0/0 MARK xor 0x4000
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes service traffic requiring SNAT */ random-fully
(规则链) Chain LIBVIRT_PRT (1 references)
target prot opt source destination
RETURN all -- 192.168.122.0/24 224.0.0.0/24
RETURN all -- 192.168.122.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
target
:目标,表示这条规则的动作,比如 ACCEPT/REJECT/DROP 等。prot
:协议,表示这条规则所匹配的协议,比如 TCP/UDP/ICMP 等。opt
:选项,表示这条规则所匹配的选项,比如 --dport/--sport 等。source
:源地址,表示这条规则所匹配的源 IP 地址或网段。destination
:目标地址,表示这条规则所匹配的目标 IP 地址或网段。
在 iptables 输出中,target 字段表示数据包应该被送往哪里。 以下是常见的 target 值的含义:
- ACCEPT:表示允许数据包通过防火墙;
- DROP:表示丢弃(拒绝)数据包,不给任何回应;
- REJECT:表示拒绝数据包,并发送 ICMP 错误消息给发送者;
- LOG:表示记录数据包信息(如源 IP,目的 IP,端口等)到系统日志中;
- RETURN:表示返回到调用链的上一层规则;
- SNAT:表示源地址转换,更改数据包的源 IP 地址;
- DNAT:表示目标地址转换,更改数据包的目标 IP 地址;
- MASQUERADE:表示伪装 NAT,常用于连接到互联网的局域网内网设备;
- REDIRECT:表示重定向到指定的端口或 IP 地址;
- MARK:表示给数据包打标签,以便后续规则匹配使用。
七、brctl show 显示Linux机器上的桥接设备
# 网桥连接虚拟机的网卡和物理机的网卡 (连接多个网络的)
[root@i-C5B261D3 ~]# brctl show
bridge name (名称) bridge id (唯一标识符,由MAC地址生成) STP enabled (防止桥环路协议是否启用) interfaces (该bridge下所连接的接口)
virbr0 8000.5254000ae93a yes virbr0-nic
cidr
https://tool.lu/zh_CN/cidr/
CIDR(Classless Inter-Domain Routing)是互联网中一种新的寻址方式,表示为:IP地址/网络ID的位数。 比如192.168.1.0/24,那么ip地址前24位是网络部分,后面8位是主机部分
ip a
/etc/network/interfaces.d 文件夹干嘛的
- 存放网络接口配置文件的文件夹
- 内部每个配置文件描述了一个网络接口
其中网络接口的字段有
netmask:指定网络掩码,用于确定网络地址和主机地址的范围。
address:指定网络接口的IP地址。
gateway:指定默认网关,即发送到其他网络的数据包要通过该网关转发。
dns-nameservers:指定域名系统(DNS)服务器的IP地址,用于解析域名为IP地址。
网络掩码是什么
- 定义一个IP地址的网络部分和主机部分。(这句话什么意思呢,每个IP地址都是一个32位的二进制,这个掩码代表了前多少位是网路部分,后面的多少位是主机部分)
IP地址为192.168.1.1,网络掩码为255.255.255.0,那么设备所在的网络范围是什么,怎么计算的
- 网络掩码255.255.255.0代表设备的IP地址中,前24位是网络地址(192.168.1),后面的8位就是主机地址
- 该设备所在的网络范围是192.168.1.0/24
如果网络掩码为255.255.248.0,那么转换二进制子网掩码:11111111.11111111.11111000.00000000,刚好21位,那么IP地址的前21位是网络ID,后11位是主机ID,网络范围是192.168.0.0/21。也就是说IP地址范围为192.168.0.1 ~ 192.168.7.254
网卡
- 实例
# ifconfig只能查看本机的网络配置和IP地址
[root@i-33D71DFC ~]# ifconfig
# 网卡名称或者叫网络接口名称: enp1s0
# 后面的<>必须要有UP才表示启用状态 如果没有启用可以使用 ip link set xxx up
enp1s0: flags=4163< UP,BROADCAST 支持广播,RUNNING ,MULTICAST 支持多播 > mtu 1500 最大传输单元为1500字节(网络接口能够传输的最大数据大小)
# IP 地址 # 子网掩码 # 当前网络接口的广播地址
inet 10.16.123.39 netmask 255.255.248.0 broadcast 10.16.207.255
# ipv6地址
inet6 fe80::ca83:3404:d922:1960 prefixlen 64 scopeid 0x20<link>
# ether查看 MAC 地址
ether d0:0d:33:d7:1d:fc txqueuelen 1000 (Ethernet)
# 接受和发送的数据包数量和字节数
RX packets 34122 bytes 612851235 (584.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31682 bytes 5632014 (5.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 311 bytes 27368 (26.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 311 bytes 27368 (26.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:0a:e9:3a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 解释
执行 "ifconfig" 命令可以查看 Linux 系统上的网络接口信息。以下是该命令输出的一些字段及其含义:
- 网络接口名称(例如 enp0s3):这是网络接口的名称,每个接口都有一个唯一的名称。
- flags 属性:它告诉您接口的当前状态,如是否启用(UP)、是否支持广播(BROADCAST)、是否运行(RUNNING)和是否支持多播(MULTICAST)。
- inet 属性:它显示分配给接口的 IP 地址。
- netmask 属性:它显示子网掩码。
- ether 属性:它显示该接口的 MAC 地址。
- RX 和 TX 计数器:它们表示接受和发送的数据包数量和字节数。
- 错误计数器:它们表示在传输或接收数据包时发生的错误数量。
- dropped 计数器:它们表示在传输或接收数据包时被丢弃的数据包数量。
- overruns 计数器:它们表示在传输数据包时,以高于接口处理能力的速度到达的数据包的数量。
- collisions 计数器:它们表示在传输数据包时,同一时间有多个设备试图传输数据包的数量。
通过查看这些信息,您可以了解有关每个网络接口及其配置的详细信息。
局域网
- linux如何查看当前机器的局域网ip
在Linux系统中,可以使用如下命令查看当前机器的局域网IP:
1. 打开终端,输入命令:ifconfig,查看当前机器的网络信息。
2. 在ifconfig的输出结果中,找到本地连接的IP地址,通常是以“inet”开头的一行,例如:inet 192.168.1.100。
3. 以192.168.1.100为例,该地址是当前机器的IP地址,可以通过它获取当前机器的局域网IP。
假设子网掩码为255.255.255.0,则将IP地址中的最后一段改为0,即192.168.1.0,这就是当前机器所在的局域网IP地址。
如果想查看当前机器所连接的网络设备的状态,可以使用命令:ip addr show。该命令可以列出当前机器所有的网络设备及其IP地址。