Background:
某个不想看书的下午…
Test:
- 创建macvlan设备
1 2 3 4 |
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:http://www.just4coding.com/blog/2016/12/04/virtualnetworkdevice/
- ppp拨号
若先前已经使用pppoeconf配置过拨号,则可在/etc/ppp/peers找到现成的配置文件,稍加更改便可使用:
1 2 3 4 5 6 7 8 |
#在某个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,玩个毛线多拨啊