smoke-relay.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. set -e -x
  3. set -o pipefail
  4. mkdir -p logs
  5. cleanup() {
  6. echo
  7. echo " *** cleanup"
  8. echo
  9. set +e
  10. if [ "$(jobs -r)" ]
  11. then
  12. docker kill lighthouse1 host2 host3 host4
  13. fi
  14. }
  15. trap cleanup EXIT
  16. docker run --name lighthouse1 --rm nebula:smoke-relay -config lighthouse1.yml -test
  17. docker run --name host2 --rm nebula:smoke-relay -config host2.yml -test
  18. docker run --name host3 --rm nebula:smoke-relay -config host3.yml -test
  19. docker run --name host4 --rm nebula:smoke-relay -config host4.yml -test
  20. docker run --name lighthouse1 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm nebula:smoke-relay -config lighthouse1.yml 2>&1 | tee logs/lighthouse1 | sed -u 's/^/ [lighthouse1] /' &
  21. sleep 1
  22. docker run --name host2 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm nebula:smoke-relay -config host2.yml 2>&1 | tee logs/host2 | sed -u 's/^/ [host2] /' &
  23. sleep 1
  24. docker run --name host3 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm nebula:smoke-relay -config host3.yml 2>&1 | tee logs/host3 | sed -u 's/^/ [host3] /' &
  25. sleep 1
  26. docker run --name host4 --device /dev/net/tun:/dev/net/tun --cap-add NET_ADMIN --rm nebula:smoke-relay -config host4.yml 2>&1 | tee logs/host4 | sed -u 's/^/ [host4] /' &
  27. sleep 1
  28. set +x
  29. echo
  30. echo " *** Testing ping from lighthouse1"
  31. echo
  32. set -x
  33. docker exec lighthouse1 ping -c1 192.168.100.2
  34. docker exec lighthouse1 ping -c1 192.168.100.3
  35. docker exec lighthouse1 ping -c1 192.168.100.4
  36. set +x
  37. echo
  38. echo " *** Testing ping from host2"
  39. echo
  40. set -x
  41. docker exec host2 ping -c1 192.168.100.1
  42. # Should fail because no relay configured in this direction
  43. ! docker exec host2 ping -c1 192.168.100.3 -w5 || exit 1
  44. ! docker exec host2 ping -c1 192.168.100.4 -w5 || exit 1
  45. set +x
  46. echo
  47. echo " *** Testing ping from host3"
  48. echo
  49. set -x
  50. docker exec host3 ping -c1 192.168.100.1
  51. docker exec host3 ping -c1 192.168.100.2
  52. docker exec host3 ping -c1 192.168.100.4
  53. set +x
  54. echo
  55. echo " *** Testing ping from host4"
  56. echo
  57. set -x
  58. docker exec host4 ping -c1 192.168.100.1
  59. # Should fail because relays not allowed
  60. ! docker exec host4 ping -c1 192.168.100.2 -w5 || exit 1
  61. docker exec host4 ping -c1 192.168.100.3
  62. docker exec host4 sh -c 'kill 1'
  63. docker exec host3 sh -c 'kill 1'
  64. docker exec host2 sh -c 'kill 1'
  65. docker exec lighthouse1 sh -c 'kill 1'
  66. sleep 5
  67. if [ "$(jobs -r)" ]
  68. then
  69. echo "nebula still running after SIGTERM sent" >&2
  70. exit 1
  71. fi