网络基础知识
网络相关命令
查看Linux中的网卡
- [root@localhost ~]# ip link show
- [root@localhost ~]# ls /sys/class/net
- [root@localhost ~]# ip a
状态: UP、DOWN、UNKNOW
link/ether:MAC地址
inet:该网卡绑定的IPv4地址
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:43:ed:74 brd ff:ff:ff:ff:ff:ff
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:60:35:29:a1 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ls /sys/class/net
docker0 ens33 lo
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:43:ed:74 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.104/24 brd 192.168.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 2409:8a70:1062:aa70:20c:29ff:fe43:ed74/64 scope global mngtmpaddr dynamic
valid_lft 247096sec preferred_lft 160696sec
inet6 fe80::20c:29ff:fe43:ed74/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:60:35:29:a1 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
[root@localhost ~]#
网卡对应的配置文件
网卡对应配置文件目录:/etc/sysconfig/network-scripts/
以ifcfg-ens33为例
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" # 表示接口类型:Ethernet-以太网,Bridge-桥接接口
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 网卡类型:dhcp-动态 static-静态 none-固定
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="46d7dee9-2fae-4f9d-b695-22e96afc984c"
DEVICE="ens33" # 网卡名称
ONBOOT="yes" # 开机或重启网卡时,是否启用该网卡
IPADDR="192.168.1.104"
NETMASK="255.255.255.0" # 子网掩码
DNS1="192.168.1.1" # DNS 地址
GATEWAY="192.168.1.1" # 网关
Network Namespace
在linux中,网络的隔离是通过network namespace来管理,不同的network namespace是相互隔离的。
ip netns list 查看network namespace
ip netns add ns2 添加network namespace ns2
ip netns delete ns3 删除ns3
ip netns exec ns1 ip a 查看namesapce ns1下的网卡情况
ip netns exec ns1 ifup lo 启动namespace ns1
ip netns exec ns1 ip link set lo up 启动namespace ns1
veth pair
不同Namespace下的网络是不互通的
veth pair: virtual ethernet pair, 这是一个成对的端口,可以实现不同命名空间下的网络互通功能。
第一步:首先创建一个成对的veth pair
[root@localhost ~]# ip link add veth-ns1 type veth peer name veth-ns2
第二步:将这对veth pair放到对应的网络空间
[root@localhost ~]# ip link set veth-ns1 netns ns1
[root@localhost ~]# ip link set veth-ns2 netns ns2
设置后可以发现原来的网络下已经没有这两个网卡了
发现网络空间ns1和ns2下分别多了一个网卡
第三步:给网络空间下的veth添加 ip 地址
[root@localhost ~]# ip netns exec ns1 ip addr add 192.168.1.11/24 dev veth-ns1
[root@localhost ~]# ip netns exec ns2 ip addr add 192.168.1.12/24 dev veth-ns2
第四步:启动网络空间
[root@localhost ~]# ip netns exec ns1 ip link set veth-ns1 up
[root@localhost ~]# ip netns exec ns2 ip link set veth-ns2 up
[root@localhost ~]# ip netns exec ns1 ip a
第五步:ping测试,发现可以彼此互通
[root@localhost ~]# ip netns exec ns1 ping 192.168.1.12
[root@localhost ~]# ip netns exec ns2 ping 192.168.1.11