模拟同主机跨网段通信

同主机跨网段通信

使用namespace完成

创建两个namespace

ip netns add ns1
ip netns add ns2

创建两对 veth-pair,一端分别挂在两个 namespace 中:

ip link add v1 type veth peer name v1_r
ip link add v2 type veth peer name v2_r

ip link set v1 netns ns1
ip link set v2 netns ns2

分别给两对 veth-pair 端点配上 IP 并启用:

ip a a 10.10.10.1/24 dev v1_r
ip l s v1_r up
ip a a 10.10.20.1/24 dev v2_r
ip l s v2_r up

ip netns exec ns1 ip a a 10.10.10.2/24 dev v1
ip netns exec ns1 ip l s v1 up
ip netns exec ns2 ip a a 10.10.20.2/24 dev v2
ip netns exec ns2 ip l s v2 up

在这里插入图片描述

ping失败,开启ipv4转发依旧失败

查看ns1路由表信息
在这里插入图片描述

只有一条直连路由,没有去往 10.10.20.0/24 网段的路由,配置路由。

sudo ip netns exec ns1 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.10.1

重新查看路由表,添加成功

在这里插入图片描述

再次ping

在这里插入图片描述

没有配置ns2 去往10.10.10.0/24网段的路由

sudo ip netns exec ns2 ip route add 10.10.10.0/24 via 10.10.20.1

在 FORWARD 链的最顶部插入规则,允许从 10.10.10.0/2410.10.20.0/24 和反向的流量。

sudo iptables -I FORWARD 1 -s 10.10.10.0/24 -d 10.10.20.0/24 -j ACCEPT
sudo iptables -I FORWARD 1 -s 10.10.20.0/24 -d 10.10.10.0/24 -j ACCEPT

重新ping,测试

在这里插入图片描述

使用Libpcap捕获用户级别的网络数据包

跨网段数据包发送过程:

将lo接口在ns1命名空间中启用,并在命名空间ns1中启动一个python3内置的HTTP服务器,该服务器监听端口为8080,并接受来自任务网络接口的请求。

sudo ip netns exec ns1 ip addr show lo
sudo ip netns exec ns1 ip link set lo up
sudo ip netns exec ns1 python3 -m http.server 8080 --bind 0.0.0.0

在这里插入图片描述

在这里插入图片描述

在ns2访问HTTP服务器

sudo ip netns exec ns2 curl http://10.10.10.2:8080

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值