没有记录,就没有发生。

0%

记一次树莓派的多拨试验

Background

某个不想看书的下午…

TEST

创建macvlan设备

ip netns add netns1
ip link add eth0.1 link eth0 type macvlan mode bridge #新建设备eth0.1,桥接eth0
ip link set eth0.1 netns netns1 #将设备丢进netns1
ip netns exec netns1 ip link set eth0.1 up #启动设备

一般情况下,网卡只有一个MAC地址。然而,有些场景下需要给一个网卡设置多个MAC地址。Linux通过MACVLAN技术在一个物理网卡上创建多个MACVLAN虚拟设备,每个设备有着不同的MAC地址。当物理网卡收到数据包时,MACVLAN driver根据数据包MAC地址将数据包交由匹配的虚拟网卡处理。使用MACVLAN可以替代使用bridge来连接物理网卡和虚拟网络设备。

pppoe拨号时,服务器根据mac地址分配ip,如果直接使用同一个设备拨号是不能达到多播效果的(但是能拿到同一个ip??ppp0,ppp1同一个ip,然后不出意料的掉线了)

一般情况下,Linux的网络接口,路由表、协议栈、iptables规则等资源由操作系统的全部进程共享。通过使用netowrk namespace, 可以将这些网络资源隔离开,只由namespace内的进程共享。

效果:

ref:虚拟网络设备

ppp拨号

若先前已经使用pppoeconf配置过拨号,则可在/etc/ppp/peers找到现成的配置文件,稍加更改便可使用:

#在某个netnamespace中创建进程既可以用ip netns exec的方式,也可以直接创建一个bash,但是记得要退出(不然真的傻傻分不清了)
ip netns exec netns1 bash
cd /etc/ppp/peers
cp dsl-proviser test

#然后将文件中的plugin rp-pppoe.so XXX换成刚刚新建的设备
pon test
exit

Script

太懒了,手动一个个设置,干脆来个脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
num=10 #多拨数量
user=test #pppoe用户名
wan=eth0 #拨号所用的物理端口

#交互部分,如果上面直接填的话就注释掉吧
read -p "请输入用户名:" user
read -p "请输入多拨数量:" num
read -p "请输入拨号所用的物理端口(默认eth0):" wan

rt=1
while \[ ${rt} -lt ${num} \]
do
dev=${wan}.${rt}
ip link add ${dev} link ${wan} type macvlan mode bridge
ip netns add ns${rt}
ip link set ${dev} netns ns${rt}
ip netns exec ns${rt} ip link set ${wan}.${rt}
cat >>/etc/ppp/peers/p${rt} <<-EOF
\# Minimalistic default options file for DSL/PPPoE connections

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so ${dev}
usepeerdns
user "${user}"
EOF
ip netns exec ns${rt} pon p${rt}
sleep 10s
echo "第${rt}次拨号,状态:"
ip netns exec ns${rt} ifconfig ppp0
rt=\`expr ${rt} + 1\`
done

echo "拨号结束,可使用ip netns exec ns(1,2...拨号数) \[cmd\]在对应的命名空间进行操作"

我没试过啊,后果自负(也没啥后果,重启就好了)

Something else…

树莓派网卡也就100M,校园网一拨50M,玩个毛线多拨啊

------------- END OF FILE meow~-------------