Linux网络 —— Network namespace

Docker是基于Linux Kernel的namespace做的隔离,这里重点讨论linux的Network namespace网络隔离。

1.Linux中的网卡

# 查看网络信息 
ip a[ddr]
0
lo: 本地网卡,回环的网络接口127.0.0.1
eth0: 网络通信的,用来连接网络的
eth1: 本地网卡,虚拟机配置的网段,与宿主机关联
docker0: docker的网卡
# 简化命令 
ip link show 
# 都是以文件形式存储 
ls /sys/class/net
0
修改网络配置:linux 网络.note [参考]
cd /etc/sysconfig/network-scripts/ 
vi ifcfg-eth0
0
 一个网卡可以绑定多个IP
ip addr add 192.168.100.120/24 dev eth0    # 给eth0网卡添加192.168.100.120的ip信息
ip addr delete 192.168.100.120/24 dev eth0    # 删除添加的IP
0

2.Network Namespace

Network Namespace是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息.不管是虚拟机还是容器,运行的时候仿佛自己就在独立的网络中.
Network Namespace 实战
复制代码
# 添加一个namespace
ip netns add ns1

# 查看当前具有的namespace
ip netns list

# 删除namespace
ip netns delete ns1

# 进入net的命名空间
ip netns exec ns1 ip a
复制代码
0
ns1的lo 与宿主机网络是隔离的
0
默认lo的state状态时DOWN.
# 启动 lo 网卡
ip netns exec ns1 ifup lo
ip netns exec ns1 ip link set lo up    #等同于

# 停掉 lo 网卡
ip netns exec ns1 ifdown lo
ip netns exec ns1 link set lo down    #等同于
0

3.两个namespace互联

0
veth pair:虚拟以太网连接。必须是成对出现的。
思想:在宿主机上创建成对的veth网卡,分别分配给ns1和ns2,来实现ns1和ns2通讯的。
# 创建ns2,并启用网卡
ip netns add ns2
ip netns exec ns2 ip link set lo up

# 创建veth peer
ip link add veth-ns1 type veth peer name veth-ns2
0
# 将veth-ns1交给ns1
ip link set veth-ns1 netns ns1
ip netns exec ns1 ip a        # 查看
0
# 由于状态时Dwon,现在将它启用
ip netns exec ns1 ip link set veth-ns1 up
ip netns exec ns1 ip a    
 此处虽然网卡启动了,但是没有ip,因为它也不知道。所以要设置一下。
 
0
ip netns exec ns1 ip addr add 192.168.0.11/24 dev veth-ns1
ip netns exec ns1 ip a 
0
同理,设置ns2的veth
ip link set veth-ns2 netns ns2
ip netns exec ns2 ip a 
ip netns exec ns2 ip addr add 192.168.0.12/24 dev veth-ns2
ip netns exec ns2 ip a 
ip netns exec ns2 ip link set veth-ns2 up
ip netns exec ns2 ip a 

两边都设置好,成对的网卡才能上线,网卡状态都UP

0
现在状态如图
0
# 查看连通性
ip netns exec ns1 ping 192.168.0.12
ip netns exec ns2 ping 192.168.0.11

至此,两边网络是互通的。

posted @   海~~D  阅读(757)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示