(OK)(OK) seem-tools-CLI-semi-auto_4_vbox.sh

来源:互联网 发布:女生做seo 编辑:程序博客网 时间:2024/06/10 05:31


#!/bin/sh#------------------------------------------------------------------------------------------# This tool (seem-tools-CLI-semi-auto_4_vbox.sh) is released under GNU GPL v2,v3# Author: Tongguang Zhang# Date: 2016-06-18# # Note, Prerequisites for using this script:  You have already installed Docker and NS3.# Path in my notebook:# NS3: /opt/tools/network_simulators/ns3/ns-allinone-3.25/#------------------------------------------------------------------------------------------#------------------------------------------------------------------------------------------# (OK)(OK)(All in CLI) Fedora23 + Docker(centos-manet) + NS3 + MANETs - testing#------------------------------------------------------------------------------------------#------------------------------------------------------------------------------------------# function create_docker()# Description:# create $docker_node_num of dockers# receive two parameters, that are docker_node_num, docker_image## IP address scope: 112.26.1.${id}/16#------------------------------------------------------------------------------------------create_docker(){# $1, that is, docker_node_num# $2, that is, docker_image# You will also have to make sure that your kernel has ethernet filtering (ebtables, bridge-nf,# arptables) disabled. If you do not do this, only STP and ARP traffic will be allowed to # flow across your bridge and your whole scenario will not work.# if directory "/proc/sys/net/bridge" missing, I execute "modprobe br_netfilter" to get this directory again.if [ ! -d /proc/sys/net/bridge ]; thenmodprobe br_netfilterficd /proc/sys/net/bridgefor f in bridge-nf-*; do echo 0 > $f; donecd -# [root@localhost ~]# man ip-netns# By convention a named network namespace is an object at /var/run/netns/NAME that can be opened.# The file descriptor resulting from opening /var/run/netns/NAME refers to the specified network# namespace. Holding that file descriptor open keeps the network namespace alive.# The file descriptor can be used with the setns(2) system# call to change the network namespace associated with a task.rm /var/run/netns -rf &>/dev/nullmkdir -p /var/run/netns &>/dev/null# $1, that is, docker_node_num# $2, that is, docker_imagefor((id=1; id<=$1; id++))do# to determine whether docker_image existsvm_image="$2"exists=`docker images | awk -F \" '{print $1}' | grep ${vm_image} | wc -l | cat`if [ $exists -eq 0 ]; thenecho "${vm_image} does not exist"exitfi# docker run -it --rm --net='none' --name "docker_${id}" centos-manet /bin/sh# gnome-terminal -x bash -c "docker run -it --rm --net='none' --name \"docker_${id}\" centos-manet /bin/sh"# gnome-terminal -x bash -c "docker run -it --rm --net='none' --name \"docker_${id}\" $2 /bin/sh"#gnome-terminal -x bash -c "docker run -it --rm --net='none' --name \"docker_${id}\" $2"# kernel network capabilities are not enabled by default.# You are going to need to run your container with --privilegedgnome-terminal -x bash -c "docker run --privileged -it -d --net='none' --name \"docker_${id}\" $2"sleep 2docker exec docker_${id} /bin/sh -c "sed -i '21a \ router-id 10.1.1.${id}' /usr/local/etc/ospf6d.conf"docker exec docker_${id} /bin/sh -c "zebra -d &>/dev/null"docker exec docker_${id} /bin/sh -c "ospf6d -d &>/dev/null"# SET VARIABLES# get PID of CONTAINERpid=$(docker inspect -f '{{.State.Pid}}' "docker_${id}")bridge="br_d_${id}"tap="tap_d_${id}"veth="veth_${id}"deth="deth_${id}"brctl addbr ${bridge}ip link add ${veth} type veth peer name ${deth}brctl addif ${bridge} ${veth}ip link set ${veth} up# ifconfig ${veth} 0.0.0.0 promisc upip link set ${deth} netns ${pid}tunctl -t ${tap}ifconfig ${tap} up# ifconfig ${tap} promisc up# ifconfig ${tap} 0.0.0.0 promisc upbrctl addif ${bridge} ${tap}ifconfig ${bridge} up# ifconfig ${bridge} promisc up# ifconfig ${bridge} 0.0.0.0 promisc upln -s /proc/${pid}/ns/net /var/run/netns/${pid}ip netns exec ${pid} ip link set dev ${deth} name eth0ip netns exec ${pid} ip link set eth0 up# ip netns exec ${pid} ip addr add 192.168.26.${id}/24 dev eth0ip netns exec ${pid} ip addr add 112.26.1.${id}/16 dev eth0done}#------------------------------------------------------------------------------------------# function destroy_docker()# Description:# destroy $docker_node_num of dockers# receive one parameter, that is docker_node_num#------------------------------------------------------------------------------------------destroy_docker(){# $1, that is, $docker_node_numfor((id=1; id<=$1; id++))dobridge="br_d_${id}"tap="tap_d_${id}"veth="veth_${id}"ifconfig ${bridge} down &>/dev/nullbrctl delif ${bridge} ${tap} &>/dev/nullbrctl delbr ${bridge} &>/dev/nullifconfig ${tap} down &>/dev/nulltunctl -d ${tap} &>/dev/nullifconfig ${veth} down &>/dev/nulldocker stop "docker_${id}" &>/dev/nulldocker rm "docker_${id}" &>/dev/nulldone}#------------------------------------------------------------------------------------------# So far, OK OK OK#------------------------------------------------------------------------------------------#--------------------------------------------------------------------------# (OK)(OK)(All in CLI) running two Android-x86 which connect to NS3(MANETs) via "ethernet bridge"#--------------------------------------------------------------------------# ip route add 192.168.26.0/24 dev br_a_1# adb devices# adb root# adb connect 192.168.56.101:5555# adb devices# adb -s 192.168.56.101:5555 root# adb -s 192.168.56.101:5555 shell# adb disconnect 192.168.56.102:5555# VBoxManage controlvm android-x86_64-6.0-rc1-1 poweroff#------------------------------------------------------------------------------------------# function create_android()# Description:# create $android_node_num of dockers# receive three parameters, that are docker_node_num, android_node_num, VM_image## IP address scope: 112.26.2.${id}/16#------------------------------------------------------------------------------------------create_android(){# $1, that is, docker_node_num# $2, that is, android_node_num# $3, that is, VM_image# $4, that is, PATH of *.vdi# You will also have to make sure that your kernel has ethernet filtering (ebtables, bridge-nf,# arptables) disabled. If you do not do this, only STP and ARP traffic will be allowed to # flow across your bridge and your whole scenario will not work.if [ ! -d /proc/sys/net/bridge ]; thenmodprobe br_netfilterficd /proc/sys/net/bridgefor f in bridge-nf-*; do echo 0 > $f; donecd -for((id=1; id<=$2; id++))do# to determine whether VM_image exists# vm_image=$3${id}# exists=`VBoxManage list vms | awk -F \" '{print $2}' | grep ${vm_image} | wc -l | cat`# if [ $exists -eq 0 ]; then# echo "${vm_image} does not exist"# exit# fi# SET VARIABLESbridge="br_a_${id}"tap="tap_a_${id}"# look at VirtualBox Gloable Setting, that is, vboxnet0: 192.168.56.1, 192.168.56.2(DHCPD), (3-254)#host0=$[2+id]#eth0_a_ip="192.168.56.${host0}"#eth0_a_ip="112.26.2.${id}"tunctl -t ${tap}#ip link set up dev ${tap}#ifconfig ${tap} 0.0.0.0 promisc upifconfig ${tap} upbrctl addbr ${bridge}brctl addif ${bridge} ${tap}#ip link set up dev ${bridge}ifconfig ${bridge} up#ifconfig ${bridge} 0.0.0.0 promisc up# VBoxManage modifyvm android-x86_64-6.0-rc1-${id} --memory 1024 --nic1 hostonly --nictype1 Am79C973 --hostonlyadapter1 vboxnet0  --nic2 bridged --bridgeadapter2 ${bridge}# VBoxManage startvm android-x86_64-6.0-rc1-${id}# gnome-terminal -x bash -c "VBoxManage startvm android-x86_64-6.0-rc1-${id}"# VBoxManage hostonlyif create# VBoxManage hostonlyif ipconfig vboxnet0 --ip 10.0.0.10 --netmask 255.255.255.0# VBoxManage list hostonlyifs# VBoxManage list dhcpservers# VBoxManage list bridgedifs# VBoxManage modifyvm $3${id} --nic1 hostonly --nictype1 Am79C973 --hostonlyadapter1 vboxnet0 --nic2 bridged --bridgeadapter2 ${bridge}# NOTE: (vboxnet0 - 192.168.56) (vboxnet1 - 192.168.57) (vboxnet2 - 192.168.58)# VBoxManage modifyvm $3${id} --nic1 hostonly --nictype1 Am79C973 --hostonlyadapter1 vboxnet0 --nic2 bridged --bridgeadapter2 ${bridge} --nic3 none --nic4 none# gnome-terminal -x bash -c "VBoxManage startvm $3${id}"# sleep 30# # adb connect ${eth0_a_ip}# sleep 1# adb -s ${eth0_a_ip}:5555 root# sleep 1# adb connect ${eth0_a_ip}# sleep 1# adb -s ${eth0_a_ip}:5555 root# sleep 1# adb connect ${eth0_a_ip}# adb -s ${eth0_a_ip}:5555 shell mkdir -p /opt/android-on-linux/quagga/out/etc# adb -s ${eth0_a_ip}:5555 shell cp /system/xbin/quagga/etc/zebra.conf /opt/android-on-linux/quagga/out/etc/# adb -s ${eth0_a_ip}:5555 shell cp /system/xbin/quagga/etc/ospf6d.conf /opt/android-on-linux/quagga/out/etc/# adb -s ${eth0_a_ip}:5555 shell /system/xbin/quagga/zebra -d# adb -s ${eth0_a_ip}:5555 shell /system/xbin/quagga/ospf6d -d# adb -s ${eth0_a_ip}:5555 shell ifconfig eth1 down# adb -s ${eth0_a_ip}:5555 shell ifconfig eth1 ${eth0_a_ip} netmask 255.255.255.0 up# adb -s ${eth0_a_ip}:5555 shell ifconfig eth0 down# VBoxManage createvm --name android-x86_64-6.0-rc1-1 --ostype Linux_64 --register# VBoxManage modifyvm android-x86_64-6.0-rc1-1 --memory 1024 --vram 128 --usb off --audio pulse --audiocontroller sb16 --acpi on --rtcuseutc off --boot1 disk --boot2 dvd --nic1 hostonly --nictype1 Am79C973 --hostonlyadapter1 vboxnet0# VBoxManage storagectl android-x86_64-6.0-rc1-1 --name "IDE Controller" --add ide --controller PIIX4# VBoxManage storageattach android-x86_64-6.0-rc1-1 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium android-x86_64-6.0-rc1-1.vdi# VBoxManage startvm android-x86_64-6.0-rc1-1# --nic1 bridged --nictype1 Am79C973 --nictrace1 on --nictracefile1 $nictracefile${id} --bridgeadapter1 ${bridge}# nictracefile="/root/tmp/nictracefile_"# VBoxManage storagectl $3${id} --name \"IDE Controller\" --add ide --controller PIIX4; \# VBoxManage internalcommands sethduuid $4/$3${id}.vdi; \echo "VBoxManage startvm $3${id}"gnome-terminal -x bash -c "VBoxManage createvm --name $3${id} --ostype Linux_64 --register; \VBoxManage modifyvm $3${id} --memory 1024 --vram 128 --usb off --audio pulse --audiocontroller sb16 --acpi on --rtcuseutc off --boot1 disk --boot2 dvd --nic1 bridged --nictype1 Am79C973 --bridgeadapter1 ${bridge} --nic2 none --nic3 none --nic4 none; \VBoxManage storagectl $3${id} --name \"IDE Controller\" --add ide --controller PIIX4; \VBoxManage internalcommands sethduuid $4/$3${id}.vdi; \VBoxManage storageattach $3${id} --storagectl \"IDE Controller\" --port 0 --device 0 --type hdd --medium $4/$3${id}.vdi; \VBoxManage startvm $3${id}; \sleep 100"done}#------------------------------------------------------------------------------------------# function destroy_android()# Description:# destroy $android_node_num of androids# receive two parameters, that are android_node_num, VM_image#------------------------------------------------------------------------------------------destroy_android(){# $1, that is, $android_node_num# $2, that is, VM_imagefor((id=1; id<=$1; id++))doecho "VBoxManage controlvm $2${id} poweroff"VBoxManage controlvm $2${id} poweroff &>/dev/nullVBoxManage unregistervm $2${id} &>/dev/nullrm "/root/VirtualBox VMs/$2${id}" -rf &>/dev/nullsleep 1bridge="br_a_${id}"tap="tap_a_${id}"ifconfig ${bridge} down &>/dev/nullbrctl delif ${bridge} ${tap} &>/dev/nullbrctl delbr ${bridge} &>/dev/nullifconfig ${tap} down &>/dev/nulltunctl -d ${tap} &>/dev/nulldone}#------------------------------------------------------------------------------------------# usage() # script usage#------------------------------------------------------------------------------------------usage(){cat <<-EOU    Usage: seem-tools-CLI-semi-auto_4_vbox.sh a b c d e f        a, the value is create or destroy        b, the number of dockers to be created        c, the number of androids to be created        d, docker image, such as, busybox or ubuntu, etc.        e, Android image, such as, android-x86_64-6.0-rc1-        f, the path of Android image, such as, /opt/virtualbox-os/        Note: b + c <= 254    For example:        [root@localhost fedora23server-share]# pwd            /opt/share-vm/fedora23server-share        [root@localhost fedora23server-share]# ls seem-tools-CLI-semi-auto_4_vbox.sh            seem-tools-CLI-semi-auto_4_vbox.sh        [root@localhost fedora23server-share]#        ./seem-tools-CLI-semi-auto_4_vbox.sh create 25 0 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi        ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 25 0 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi        ./seem-tools-CLI-semi-auto_4_vbox.sh create 0 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi        ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 0 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi        ./seem-tools-CLI-semi-auto_4_vbox.sh create 20 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi        ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 20 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdiEOU}#------------------------------------------------------------------------------------------# function create_ns3_manet_seem_cc()# receive two parameter, that is docker_node_num, android_node_num#------------------------------------------------------------------------------------------create_ns3_manet_seem_cc(){echo "create seem-manet.cc from seem-manet-template.cc"cd /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25/scratchrm seem-manet.cc -f &>/dev/nullcp seem-manet-template.cc seem-manet.cc# after the 306 line of /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25/scratch/seem-manet-template.ccstr='306a \\n  'for((id=1; id<=$1; id++))dotap="tap_d_${id}"ns=$[id-1]# inter="tapBridge.SetAttribute (\"Gateway\", Ipv4AddressValue (\"192.168.26.${id}\")); tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  tapBridge.Install (adhocNodes.Get (${id}), adhocDevices.Get (${id}));\n  "inter="tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  tapBridge.Install (adhocNodes.Get (${ns}), adhocDevices.Get (${ns}));\n  "#inter="tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  "str=${str}${inter}done# a: docker_node_num, b:android_node_num#host1=$[$1+1]#a=$1#b=$2#for((id=$[a+1]; id<=$[a+b]; id++))for((ns=$1, id=1; id<=$2; id++, ns++))dotap="tap_a_${id}"#ns=$[n-1]#inter="tapBridge.SetAttribute (\"Gateway\", Ipv4AddressValue (\"192.168.26.${host1}\")); tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  tapBridge.Install (adhocNodes.Get (${id}), adhocDevices.Get (${id}));\n  "inter="tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  tapBridge.Install (adhocNodes.Get (${ns}), adhocDevices.Get (${ns}));\n  "#inter="tapBridge.SetAttribute (\"DeviceName\", StringValue (\"${tap}\"));\n  "str=${str}${inter}#host1=$[host1+1]done# sed -i '306a \\n  tapBridge.SetAttribute ("DeviceName", StringValue ("tap_a_1"));\n  tapBridge.Install (adhocNodes.Get (0), adhocDevices.Get (0));\n  tapBridge.SetAttribute ("DeviceName", StringValue ("tap_a_2"));\n  tapBridge.Install (adhocNodes.Get (0), adhocDevices.Get (0));' seem-manet.ccsed -i "${str}" seem-manet.cccd -}#------------------------------------------------------------------------------------------# function start_ns3()#------------------------------------------------------------------------------------------start_ns3(){echo "RUNNING SIMULATION, press CTRL-C to stop it"cd /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25./waf --run scratch/seem-manet --vis &#./waf --run scratch/seem-manet-5-android --viscd -}#------------------------------------------------------------------------------------------# ./seem-tools-CLI-semi-auto_4_vbox.sh para1 para2 para3 para4 para5 para6# para1 ($1), that is, the value is create or destroy# para2 ($2), that is, the number of dockers to be created# para3 ($3), that is, the number of androids to be created# para4 ($4), that is, docker image, such as, busybox or ubuntu, etc.# para5 ($5), that is, Android image, such as, android-x86_64-6.0-rc1-# para6 ($6), that is, the path of Android image, such as, /opt/virtualbox-os/# [root@localhost virtualbox-os]# pwd# /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os# [root@localhost virtualbox-os]# ls# android-x86_64-6.0-rc1-1.vdi  android-x86_64-6.0-rc1-2.vdi  android-x86_64-6.0-rc1-3.vdi  android-x86_64-6.0-rc1-4.vdi# # ./seem-tools-CLI-semi-auto_4_vbox.sh create 25 0 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi# ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 25 0 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi# # ./seem-tools-CLI-semi-auto_4_vbox.sh create 0 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi# ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 0 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi# # ./seem-tools-CLI-semi-auto_4_vbox.sh create 20 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi# ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 20 5 centos-manet android-x86_64-6.0-rc1-  PATH_of_*.vdi#------------------------------------------------------------------------------------------# docker search image_name# docker pull image_name# docker images# docker rmi image_name# docker run --privileged -i -t -d --net=none --name docker_$id $docker_image -t $type -i $id# docker ps# systemctl start docker.service# the number of dockers and androids should be less than 254,# if you have more nodes in your emulation environment, you can modify corresponding code.a=$2b=$3if [ $# -eq 6 ]; thenif [ $[a+b] -gt 254 ] || [ $2 -lt 0 ] || [ $3 -lt 0 ] || !([ $1 == "create" ]||[ $1 == "destroy" ]); thenusageexitficase $1 increate)if [ $2 -gt 0 ]; then create_docker $2 $4; fiif [ $3 -gt 0 ]; then create_android $2 $3 $5 $6; fiif [ $[a+b] -gt 0 ]; thencreate_ns3_manet_seem_cc $2 $3# waiting a while, push init_in_android-x86_64.sh in create_vm(),# due to that init_in_android-x86_64.sh may be exist in android-x86_64-6.0-rc1-[1-252].vdi# if create android-x86_64-6.0-rc1-[1-252].vdi from scratch create, then can delete the following line. # look at seem-tools-auto_create_vm_android.shsleep 60start_ns3fi;;destroy)if [ $2 -gt 0 ]; thendestroy_docker $2rm /var/run/netns -rf &>/dev/nullfiif [ $3 -gt 0 ]; thendestroy_android $3 $5ifconfig vboxnet0 down &>/dev/nullfipkill seem-manet;;esacelseusagefi# [root@localhost virtualbox-os]# pwd# /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os# [root@localhost virtualbox-os]# ls# android-x86_64-6.0-rc1-0.vdi  android-x86_64-6.0-rc1-2.vdi  android-x86_64-6.0-rc1-4.vdi# android-x86_64-6.0-rc1-1.vdi  android-x86_64-6.0-rc1-3.vdi  android-x86_64-6.0-rc1-5.vdi# [root@localhost virtualbox-os]# #-----------------------------------------------------------------------------# 25 docker (centos)#-----------------------------------------------------------------------------# systemctl start docker.service# systemctl status docker.service# [root@localhost fedora23server-share]# pwd# /opt/share-vm/fedora23server-share# ./seem-tools-CLI-semi-auto_4_vbox.sh create 25 0 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os# ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 25 0 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os# cd /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25# ./waf --run scratch/seem-manet --vis# ./waf --run scratch/seem-manet-25-docker --vis# ./waf --run scratch/seem-manet-5-docker --vis## [root@localhost tmp]# tcpdump -vv -n -i br_d_1## docker run --privileged -it -d --name "docker_1" centos-manet# docker ps -a# docker attach docker_1# docker stop docker_1# docker start docker_1# docker rm docker_1# docker ps# docker rmi 2c067614b89f# [root@localhost tmp]# tcpdump -i veth_1 > veth_1.txt# [root@localhost tmp]# gedit veth_1.txt#-----------------------------------------------------------------------------# 5 android-x86_64#-----------------------------------------------------------------------------## [root@localhost fedora23server-share]# pwd# /opt/share-vm/fedora23server-share# ./seem-tools-CLI-semi-auto_4_vbox.sh create 0 5 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os## ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 0 5 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os## cd /opt/tools/network_simulators/ns3/ns-allinone-3.25/ns-3.25# ./waf --run scratch/seem-manet --vis# ./waf --run scratch/seem-manet-5-android --vis#-----------------------------------------------------------------------------# 20 docker (centos) and 5 android-x86_64, automatically.#-----------------------------------------------------------------------------## [root@localhost fedora23server-share]# pwd# /opt/share-vm/fedora23server-share# ./seem-tools-CLI-semi-auto_4_vbox.sh create 20 5 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os## ./seem-tools-CLI-semi-auto_4_vbox.sh destroy 20 5 centos-manet android-x86_64-6.0-rc1- /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os#-----------------------------------------------------------------------------## busybox route add -host 112.26.2.1 dev eth0# busybox route add -host 112.26.2.1 gw 112.26.2.254# [root@localhost tmp]# pwd# /root/tmp# [root@localhost tmp]# ls# nictracefile_1  nictracefile_2  nictracefile_3  nictracefile_4  nictracefile_5  t.txt# [root@localhost tmp]# tcpdump -r nictracefile_1# [root@localhost tmp]# tcpdump -r nictracefile_1 > nictracefile_1.txt# [root@localhost tmp]# gedit nictracefile_1.txt# [root@localhost tmp]# tcpdump -i vboxnet0 > vboxnet0.txt# [root@localhost tmp]# tcpdump -i vboxnet0 ip6 > vboxnet0.txt# [root@localhost tmp]# tcpdump -i br_a_1 > br_a_1.txt# [root@localhost tmp]# tcpdump -i br_a_2 ip6 > br_a_2.txt# [root@localhost tmp]# tcpdump -ne -i br_a_2 ip6 > br_a_2.txt# [root@localhost tmp]# tcpdump -vv -n -i br_a_1# have you enabled IPv6 on the interface at all? if the bridge device is br_a_1, then do this:# sysctl net.ipv6.conf.br_a_1.disable_ipv6=0# sysctl net.ipv6.conf.br_a_1.autoconf=1# sysctl net.ipv6.conf.br_a_1.accept_ra=1# sysctl net.ipv6.conf.br_a_1.accept_ra_defrtr=1# less /proc/sys/net/ipv6/conf/br_a_1/disable_ipv6# Every IPv6 address, even link-local ones, automatically subscribe to a multicast group based on its last 24 bits. If multicast snooping is enabled, the bridge filters out (almost) all multicast traffic by default. When an IPv6 address is assigned to an interface, the system must inform the network that this interface is interested in that particular multicast group and must be excluded by the filter. The following is a good introductory video: https://www.youtube.com/watch?v=O1JMdjnn0ao# Multicast snooping is there to prevent flooding the network with multicast packets that most systems aren't interested. You can disable multicast snooping in small deployments without noticing any big difference. But this may have significant performance impact on larger deployments.   You can disable snooping with:# echo -n 0 > /sys/class/net/br_a_1/bridge/multicast_snooping# echo -n 0 > /sys/class/net/br_a_2/bridge/multicast_snooping# echo -n 0 > /sys/class/net/br_a_3/bridge/multicast_snooping# echo -n 0 > /sys/class/net/br_a_4/bridge/multicast_snooping# echo -n 0 > /sys/class/net/br_a_5/bridge/multicast_snooping# If you want to protect your VMs from unwanted traffic and unnecessary packet processing, you can leave snooping enabled but also enable a multicast Querier on the network. A Querier will periodically broadcast query packets and update snooping filters on switches and bridges. It is possible to enable a Querier on your system with:# echo -n 1 > /sys/class/net/br_a_1/bridge/multicast_querier# echo -n 1 > /sys/class/net/br_a_2/bridge/multicast_querier# echo -n 1 > /sys/class/net/br_a_3/bridge/multicast_querier# echo -n 1 > /sys/class/net/br_a_4/bridge/multicast_querier# echo -n 1 > /sys/class/net/br_a_5/bridge/multicast_querier# ip -6 nei# ip -4 neighbor# setprop service.adb.tcp.port 5555# stop adbd# start adbd# cd /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/virtualbox-os# VBoxManage createvm --name android-x86_64-6.0-rc1-0 --ostype Linux_64 --register# VBoxManage modifyvm android-x86_64-6.0-rc1-0 --memory 1024 --vram 128 --usb off --audio pulse --audiocontroller sb16 --acpi on --rtcuseutc off --boot1 disk --boot2 dvd --nic1 hostonly --nictype1 Am79C973 --hostonlyadapter1 vboxnet0# VBoxManage storagectl android-x86_64-6.0-rc1-0 --name "IDE Controller" --add ide --controller PIIX4# VBoxManage storageattach android-x86_64-6.0-rc1-0 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium android-x86_64-6.0-rc1-0.vdi# VBoxManage startvm android-x86_64-6.0-rc1-0#------------------------------------------------------------------------------------------# So far, All is OK#------------------------------------------------------------------------------------------


0 0
原创粉丝点击