From 919840fe217f1c1c1b933d0a03940278e7ab98de Mon Sep 17 00:00:00 2001 From: LUIS CUEVAS Date: Mon, 24 Aug 2020 15:58:15 -0500 Subject: [PATCH 1/6] Update Dockerfile --- Dockerfile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index cf62dab..9c0b980 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,11 +3,8 @@ FROM alpine:3.11 # For access via VNC EXPOSE 5900 -# Default ports of RouterOS -EXPOSE 21 22 23 80 443 8291 8728 8729 - -# Different VPN services -EXPOSE 50 51 500/udp 4500/udp 1194/tcp 1194/udp 1701 1723 +# Expose Ports of RouterOS +EXPOSE 1194 1701 1723 1812/udp 1813/udp 21 22 23 443 4500/udp 50 500/udp 51 2021 2022 2023 2027 5900 80 8080 8291 8728 8729 8900 # Change work dir (it will also create this folder if is not exist) WORKDIR /routeros From 24867a92b9c463f22a4807adc255c7a6a5f5ae0a Mon Sep 17 00:00:00 2001 From: LUIS CUEVAS Date: Mon, 24 Aug 2020 16:11:26 -0500 Subject: [PATCH 2/6] Update entrypoint_with_four_interfaces.sh --- scripts/entrypoint_with_four_interfaces.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/entrypoint_with_four_interfaces.sh b/scripts/entrypoint_with_four_interfaces.sh index b61d3f0..066927c 100755 --- a/scripts/entrypoint_with_four_interfaces.sh +++ b/scripts/entrypoint_with_four_interfaces.sh @@ -5,7 +5,7 @@ qemu-system-x86_64 \ -m 256 \ -hda $ROUTEROS_IMAGE \ -device e1000,netdev=net0 \ - -netdev user,id=net0,hostfwd=tcp::21-:21,hostfwd=tcp::22-:22,hostfwd=tcp::23-:23,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443,hostfwd=tcp::8291-:8291,hostfwd=tcp::8728-:8728,hostfwd=tcp::8729-:8729 \ + -netdev user,id=net0,hostfwd=tcp::21-:21,hostfwd=tcp::22-:22,hostfwd=tcp::23-:23,hostfwd=tcp::50-:50,hostfwd=udp::50-:50,hostfwd=tcp::51-:51,hostfwd=udp::51-:51,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443,hostfwd=udp::500-:500,hostfwd=tcp::1194-:1194,hostfwd=udp::1194-:1194,hostfwd=tcp::1701-:1701,hostfwd=udp::1701-:1701,hostfwd=tcp::1723-:1723,hostfwd=udp::1723-:1723,hostfwd=udp::1812-:1812,hostfwd=udp::1813-:1813,hostfwd=udp::4500-:4500,hostfwd=tcp::8080-:8080,hostfwd=tcp::8291-:8291,hostfwd=tcp::8728-:8728,hostfwd=tcp::8729-:8729,hostfwd=tcp::8900-:8900 \ -device e1000,netdev=net1 \ -netdev user,id=net1 \ -device e1000,netdev=net2 \ From dc0b553d1a3b4c3fd3d11f8082cfc0d0318020e1 Mon Sep 17 00:00:00 2001 From: LUIS CUEVAS Date: Fri, 6 Nov 2020 11:02:07 -0500 Subject: [PATCH 3/6] Update entrypoint.sh --- scripts/entrypoint.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 4b7c21d..3c6afcb 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -52,7 +52,8 @@ udhcpd -I $DUMMY_DHCPD_IP -f $DHCPD_CONF_FILE & exec qemu-system-x86_64 \ -nographic -serial mon:stdio \ -vnc 0.0.0.0:0 \ - -m 256 \ + --m 512 \ + -smp 4,sockets=1,cores=4,threads=1 \ -nic tap,id=qemu0,script=$QEMU_IFUP,downscript=$QEMU_IFDOWN \ "$@" \ -hda $ROUTEROS_IMAGE From 3da96519d06062813353b4b753759dd593bf23c6 Mon Sep 17 00:00:00 2001 From: LUIS CUEVAS Date: Fri, 6 Nov 2020 11:02:27 -0500 Subject: [PATCH 4/6] Update entrypoint.sh --- scripts/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 3c6afcb..98d8d62 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -52,7 +52,7 @@ udhcpd -I $DUMMY_DHCPD_IP -f $DHCPD_CONF_FILE & exec qemu-system-x86_64 \ -nographic -serial mon:stdio \ -vnc 0.0.0.0:0 \ - --m 512 \ + -m 512 \ -smp 4,sockets=1,cores=4,threads=1 \ -nic tap,id=qemu0,script=$QEMU_IFUP,downscript=$QEMU_IFDOWN \ "$@" \ From 58b92cb62714c5ade1f163ba1f4e37c4cfdb88ed Mon Sep 17 00:00:00 2001 From: administrador Date: Sat, 12 Dec 2020 15:33:23 -0600 Subject: [PATCH 5/6] test push --- scripts/qemu-ifup8 | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 scripts/qemu-ifup8 diff --git a/scripts/qemu-ifup8 b/scripts/qemu-ifup8 new file mode 100755 index 0000000..cb970b0 --- /dev/null +++ b/scripts/qemu-ifup8 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE8='qemubr8' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE8 From c5be8fde0b3dd44fb54670ef067c2fc2dc5b542a Mon Sep 17 00:00:00 2001 From: administrador Date: Sat, 12 Dec 2020 15:53:59 -0600 Subject: [PATCH 6/6] entrypoint for 8 interfaces over docker --- scripts/entrypoint_for_docker_8interfaces.sh | 110 +++++++++++++++++++ scripts/qemu-ifdown | 3 +- scripts/qemu-ifdown2 | 6 + scripts/qemu-ifdown3 | 6 + scripts/qemu-ifdown4 | 6 + scripts/qemu-ifdown5 | 6 + scripts/qemu-ifdown6 | 6 + scripts/qemu-ifdown7 | 6 + scripts/qemu-ifdown8 | 6 + scripts/qemu-ifup | 3 +- scripts/qemu-ifup2 | 6 + scripts/qemu-ifup3 | 6 + scripts/qemu-ifup4 | 6 + scripts/qemu-ifup5 | 6 + scripts/qemu-ifup6 | 6 + scripts/qemu-ifup7 | 6 + scripts/qemu-ifup8 | 1 + 17 files changed, 191 insertions(+), 4 deletions(-) create mode 100755 scripts/entrypoint_for_docker_8interfaces.sh create mode 100755 scripts/qemu-ifdown2 create mode 100755 scripts/qemu-ifdown3 create mode 100755 scripts/qemu-ifdown4 create mode 100755 scripts/qemu-ifdown5 create mode 100755 scripts/qemu-ifdown6 create mode 100755 scripts/qemu-ifdown7 create mode 100755 scripts/qemu-ifdown8 create mode 100755 scripts/qemu-ifup2 create mode 100755 scripts/qemu-ifup3 create mode 100755 scripts/qemu-ifup4 create mode 100755 scripts/qemu-ifup5 create mode 100755 scripts/qemu-ifup6 create mode 100755 scripts/qemu-ifup7 diff --git a/scripts/entrypoint_for_docker_8interfaces.sh b/scripts/entrypoint_for_docker_8interfaces.sh new file mode 100755 index 0000000..c539b94 --- /dev/null +++ b/scripts/entrypoint_for_docker_8interfaces.sh @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +# This is a humble fork modification to the master work from EvilFreelancer +# These entrypoint is for maximum 8 interfaces using Docker virtual networks +# (need 8 custom bridge networks in docker) +# First qemubr1 use DHCP as EvilFreelancer did +# next 7 interfaces qemu neeed you set 7 fixed ip address in winbox +# you must create before 8 networks in your docker and attach to the container +# Also I have enabled 4 cores in the qemu vm +# Only for testing purpose or use in lab, please dont use in production +# this router has a free license - 1Mbps only +# I have tested and it is working great anyway +# It needs some help with the DRY if you have the time please fork +# regards # lcchatter # + +QEMU_BRIDGE_ETH1='qemubr1' +QEMU_BRIDGE_ETH2='qemubr2' +QEMU_BRIDGE_ETH3='qemubr3' +QEMU_BRIDGE_ETH4='qemubr4' +QEMU_BRIDGE_ETH5='qemubr5' +QEMU_BRIDGE_ETH6='qemubr6' +QEMU_BRIDGE_ETH7='qemubr7' +QEMU_BRIDGE_ETH8='qemubr8' +default_dev1='eth0' +default_dev2='eth1' +default_dev3='eth2' +default_dev4='eth3' +default_dev5='eth4' +default_dev6='eth5' +default_dev7='eth6' +default_dev8='eth7' +# DHCPD must have an IP address to run, but that address doesn't have to +# be valid. This is the dummy address dhcpd is configured to use. +DUMMY_DHCPD_IP='10.0.0.1' + +# These scripts configure/deconfigure the VM interface on the bridge. + +QEMU_IFUP='/routeros/qemu-ifup' +QEMU_IFDOWN='/routeros/qemu-ifdown' +QEMU_IFUP2='/routeros/qemu-ifup2' +QEMU_IFDOWN2='/routeros/qemu-ifdown2' +QEMU_IFUP3='/routeros/qemu-ifup3' +QEMU_IFDOWN3='/routeros/qemu-ifdown3' +QEMU_IFUP4='/routeros/qemu-ifup4' +QEMU_IFDOWN4='/routeros/qemu-ifdown4' +QEMU_IFUP5='/routeros/qemu-ifup5' +QEMU_IFDOWN5='/routeros/qemu-ifdown5' +QEMU_IFUP6='/routeros/qemu-ifup6' +QEMU_IFDOWN6='/routeros/qemu-ifdown6' +QEMU_IFUP7='/routeros/qemu-ifup7' +QEMU_IFDOWN7='/routeros/qemu-ifdown7' +QEMU_IFUP8='/routeros/qemu-ifup8' +QEMU_IFDOWN8='/routeros/qemu-ifdown8' + +# The name of the dhcpd config file we make +DHCPD_CONF_FILE='/routeros/dhcpd.conf' +# function default_intf() { +# ip -json route show | jq -r '.[] | select(.dst == "default") | .dev' +# } + +# First step, we run the things that need to happen before we start mucking +# with the interfaces. We start by generating the DHCPD config file based +# on our current address/routes. We "steal" the container's IP, and lease +# it to the VM once it starts up. +/routeros/generate-dhcpd-conf.py $QEMU_BRIDGE_ETH1 >$DHCPD_CONF_FILE + +function prepare_intf() { + #First we clear out the IP address and route + ip addr flush dev $1 + # Next, we create our bridge, and add our container interface to it. + ip link add $2 type bridge + ip link set dev $1 master $2 + # Then, we toggle the interface and the bridge to make sure everything is up + # and running. + ip link set dev $1 up + ip link set dev $2 up +} + +prepare_intf $default_dev1 $QEMU_BRIDGE_ETH1 +# Finally, start our DHCPD server +udhcpd -I $DUMMY_DHCPD_IP -f $DHCPD_CONF_FILE & +prepare_intf $default_dev2 $QEMU_BRIDGE_ETH2 +prepare_intf $default_dev3 $QEMU_BRIDGE_ETH3 +prepare_intf $default_dev4 $QEMU_BRIDGE_ETH4 +prepare_intf $default_dev5 $QEMU_BRIDGE_ETH5 +prepare_intf $default_dev6 $QEMU_BRIDGE_ETH6 +prepare_intf $default_dev7 $QEMU_BRIDGE_ETH7 +prepare_intf $default_dev8 $QEMU_BRIDGE_ETH8 + +# And run the VM! A brief explanation of the options here: +# -enable-kvm: Use KVM for this VM (much faster for our case). +# -nographic: disable SDL graphics. +# -serial mon:stdio: use "monitored stdio" as our serial output. +# -nic: Use a TAP interface with our custom up/down scripts. +# -drive: The VM image we're booting. +exec qemu-system-x86_64 \ + -nographic -serial mon:stdio \ + -vnc 0.0.0.0:0 \ + -m 512 \ + -smp 4,sockets=1,cores=4,threads=1 \ + -nic tap,id=qemu1,script=$QEMU_IFUP,downscript=$QEMU_IFDOWN \ + -nic tap,id=qemu2,script=$QEMU_IFUP2,downscript=$QEMU_IFDOWN2 \ + -nic tap,id=qemu3,script=$QEMU_IFUP3,downscript=$QEMU_IFDOWN3 \ + -nic tap,id=qemu4,script=$QEMU_IFUP4,downscript=$QEMU_IFDOWN4 \ + -nic tap,id=qemu5,script=$QEMU_IFUP5,downscript=$QEMU_IFDOWN5 \ + -nic tap,id=qemu6,script=$QEMU_IFUP6,downscript=$QEMU_IFDOWN6 \ + -nic tap,id=qemu7,script=$QEMU_IFUP7,downscript=$QEMU_IFDOWN7 \ + -nic tap,id=qemu8,script=$QEMU_IFUP8,downscript=$QEMU_IFDOWN8 \ + "$@" \ + -hda $ROUTEROS_IMAGE diff --git a/scripts/qemu-ifdown b/scripts/qemu-ifdown index 2ffdfa7..03ddab2 100755 --- a/scripts/qemu-ifdown +++ b/scripts/qemu-ifdown @@ -1,6 +1,5 @@ #!/usr/bin/env bash -QEMU_BRIDGE='qemubr0' - +QEMU_BRIDGE='qemubr1' ip link set dev $1 nomaster ip link set dev $1 down diff --git a/scripts/qemu-ifdown2 b/scripts/qemu-ifdown2 new file mode 100755 index 0000000..b8c7010 --- /dev/null +++ b/scripts/qemu-ifdown2 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE2='qemubr2' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown3 b/scripts/qemu-ifdown3 new file mode 100755 index 0000000..4097fde --- /dev/null +++ b/scripts/qemu-ifdown3 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE3='qemubr3' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown4 b/scripts/qemu-ifdown4 new file mode 100755 index 0000000..7320afb --- /dev/null +++ b/scripts/qemu-ifdown4 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE4='qemubr4' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown5 b/scripts/qemu-ifdown5 new file mode 100755 index 0000000..1b6d7a7 --- /dev/null +++ b/scripts/qemu-ifdown5 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE5='qemubr5' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown6 b/scripts/qemu-ifdown6 new file mode 100755 index 0000000..a7ccb38 --- /dev/null +++ b/scripts/qemu-ifdown6 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE6='qemubr6' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown7 b/scripts/qemu-ifdown7 new file mode 100755 index 0000000..17c61e7 --- /dev/null +++ b/scripts/qemu-ifdown7 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE7='qemubr7' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifdown8 b/scripts/qemu-ifdown8 new file mode 100755 index 0000000..f29f6f9 --- /dev/null +++ b/scripts/qemu-ifdown8 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE8='qemubr8' + +ip link set dev $1 nomaster +ip link set dev $1 down diff --git a/scripts/qemu-ifup b/scripts/qemu-ifup index befeea3..186d99a 100755 --- a/scripts/qemu-ifup +++ b/scripts/qemu-ifup @@ -1,6 +1,5 @@ #!/usr/bin/env bash -QEMU_BRIDGE='qemubr0' - +QEMU_BRIDGE="qemubr1" ip link set dev $1 up ip link set dev $1 master $QEMU_BRIDGE diff --git a/scripts/qemu-ifup2 b/scripts/qemu-ifup2 new file mode 100755 index 0000000..b42d393 --- /dev/null +++ b/scripts/qemu-ifup2 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE2='qemubr2' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE2 diff --git a/scripts/qemu-ifup3 b/scripts/qemu-ifup3 new file mode 100755 index 0000000..5288500 --- /dev/null +++ b/scripts/qemu-ifup3 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE3='qemubr3' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE3 diff --git a/scripts/qemu-ifup4 b/scripts/qemu-ifup4 new file mode 100755 index 0000000..b90aabd --- /dev/null +++ b/scripts/qemu-ifup4 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE4='qemubr4' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE4 diff --git a/scripts/qemu-ifup5 b/scripts/qemu-ifup5 new file mode 100755 index 0000000..6ea73f8 --- /dev/null +++ b/scripts/qemu-ifup5 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE5='qemubr5' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE5 diff --git a/scripts/qemu-ifup6 b/scripts/qemu-ifup6 new file mode 100755 index 0000000..e373cb8 --- /dev/null +++ b/scripts/qemu-ifup6 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE6='qemubr6' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE6 diff --git a/scripts/qemu-ifup7 b/scripts/qemu-ifup7 new file mode 100755 index 0000000..ff1bb70 --- /dev/null +++ b/scripts/qemu-ifup7 @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +QEMU_BRIDGE7='qemubr7' + +ip link set dev $1 up +ip link set dev $1 master $QEMU_BRIDGE7 diff --git a/scripts/qemu-ifup8 b/scripts/qemu-ifup8 index cb970b0..62ee4d0 100755 --- a/scripts/qemu-ifup8 +++ b/scripts/qemu-ifup8 @@ -2,5 +2,6 @@ QEMU_BRIDGE8='qemubr8' + ip link set dev $1 up ip link set dev $1 master $QEMU_BRIDGE8