smoke-vagrant.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/bin/bash
  2. set -e -x
  3. set -o pipefail
  4. export VAGRANT_CWD="$PWD/vagrant-$1"
  5. mkdir -p logs
  6. cleanup() {
  7. echo
  8. echo " *** cleanup"
  9. echo
  10. set +e
  11. if [ "$(jobs -r)" ]
  12. then
  13. docker kill lighthouse1 host2
  14. fi
  15. vagrant destroy -f
  16. }
  17. trap cleanup EXIT
  18. CONTAINER="nebula:${NAME:-smoke}"
  19. docker run --name lighthouse1 --rm "$CONTAINER" -config lighthouse1.yml -test
  20. docker run --name host2 --rm "$CONTAINER" -config host2.yml -test
  21. vagrant up
  22. vagrant ssh -c "cd /nebula && /nebula/$1-nebula -config host3.yml -test" -- -T
  23. docker run --name lighthouse1 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm "$CONTAINER" -config lighthouse1.yml 2>&1 | tee logs/lighthouse1 | sed -u 's/^/ [lighthouse1] /' &
  24. sleep 1
  25. docker run --name host2 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm "$CONTAINER" -config host2.yml 2>&1 | tee logs/host2 | sed -u 's/^/ [host2] /' &
  26. sleep 1
  27. vagrant ssh -c "cd /nebula && sudo sh -c 'echo \$\$ >/nebula/pid && exec /nebula/$1-nebula -config host3.yml'" 2>&1 -- -T | tee logs/host3 | sed -u 's/^/ [host3] /' &
  28. sleep 15
  29. # grab tcpdump pcaps for debugging
  30. docker exec lighthouse1 tcpdump -i nebula1 -q -w - -U 2>logs/lighthouse1.inside.log >logs/lighthouse1.inside.pcap &
  31. docker exec lighthouse1 tcpdump -i eth0 -q -w - -U 2>logs/lighthouse1.outside.log >logs/lighthouse1.outside.pcap &
  32. docker exec host2 tcpdump -i nebula1 -q -w - -U 2>logs/host2.inside.log >logs/host2.inside.pcap &
  33. docker exec host2 tcpdump -i eth0 -q -w - -U 2>logs/host2.outside.log >logs/host2.outside.pcap &
  34. # vagrant ssh -c "tcpdump -i nebula1 -q -w - -U" 2>logs/host3.inside.log >logs/host3.inside.pcap &
  35. # vagrant ssh -c "tcpdump -i eth0 -q -w - -U" 2>logs/host3.outside.log >logs/host3.outside.pcap &
  36. #docker exec host2 ncat -nklv 0.0.0.0 2000 &
  37. #vagrant ssh -c "ncat -nklv 0.0.0.0 2000" &
  38. #docker exec host2 ncat -e '/usr/bin/echo host2' -nkluv 0.0.0.0 3000 &
  39. #vagrant ssh -c "ncat -e '/usr/bin/echo host3' -nkluv 0.0.0.0 3000" &
  40. set +x
  41. echo
  42. echo " *** Testing ping from lighthouse1"
  43. echo
  44. set -x
  45. docker exec lighthouse1 ping -c1 192.168.100.2
  46. docker exec lighthouse1 ping -c1 192.168.100.3
  47. set +x
  48. echo
  49. echo " *** Testing ping from host2"
  50. echo
  51. set -x
  52. docker exec host2 ping -c1 192.168.100.1
  53. # Should fail because not allowed by host3 inbound firewall
  54. ! docker exec host2 ping -c1 192.168.100.3 -w5 || exit 1
  55. #set +x
  56. #echo
  57. #echo " *** Testing ncat from host2"
  58. #echo
  59. #set -x
  60. # Should fail because not allowed by host3 inbound firewall
  61. #! docker exec host2 ncat -nzv -w5 192.168.100.3 2000 || exit 1
  62. #! docker exec host2 ncat -nzuv -w5 192.168.100.3 3000 | grep -q host3 || exit 1
  63. set +x
  64. echo
  65. echo " *** Testing ping from host3"
  66. echo
  67. set -x
  68. vagrant ssh -c "ping -c1 192.168.100.1" -- -T
  69. vagrant ssh -c "ping -c1 192.168.100.2" -- -T
  70. #set +x
  71. #echo
  72. #echo " *** Testing ncat from host3"
  73. #echo
  74. #set -x
  75. #vagrant ssh -c "ncat -nzv -w5 192.168.100.2 2000"
  76. #vagrant ssh -c "ncat -nzuv -w5 192.168.100.2 3000" | grep -q host2
  77. vagrant ssh -c "sudo xargs kill </nebula/pid" -- -T
  78. docker exec host2 sh -c 'kill 1'
  79. docker exec lighthouse1 sh -c 'kill 1'
  80. sleep 1
  81. if [ "$(jobs -r)" ]
  82. then
  83. echo "nebula still running after SIGTERM sent" >&2
  84. exit 1
  85. fi