commit cc7b1c754230c28d612358a7e3e24919c27f7ccb Author: Jordan Sokolic Date: Thu Feb 13 23:41:33 2020 +0200 initial diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6949397 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM scratch +# ADD https://downloads.openwrt.org/releases/19.07.1/targets/x86/64/openwrt-19.07.1-x86-64-generic-rootfs.tar.gz \ +ADD openwrt-19.07.1-x86-64-generic-rootfs.tar.gz / +RUN mkdir -p /var/lock +RUN opkg update && \ + opkg install luci \ + wpa-supplicant \ + hostapd \ + iw-full \ + kmod-mac80211 \ + iperf3 +ADD network /etc/config/network +ADD wireless /etc/config/wireless +CMD [ "/sbin/init" ] \ No newline at end of file diff --git a/network b/network new file mode 100644 index 0000000..43b7056 --- /dev/null +++ b/network @@ -0,0 +1,13 @@ +config interface 'loopback' + option ifname 'lo' + option proto 'static' + option ipaddr '127.0.0.1' + option netmask '255.0.0.0' + +config interface 'lan' + option type 'bridge' + option ifname 'eth0 wlan0' + option proto 'static' + option ipaddr '172.17.0.2' + option gateway '172.17.0.1' + option netmask '255.255.0.0' \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..c1575e6 --- /dev/null +++ b/run.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -ex + +CONTAINER='openwrt_1' +IFACE=$1 +PHY=$(cat /sys/class/net/$IFACE/phy80211/name) || { echo "interface $IFACE not found"; exit 1; } + +function _get_dev_from_phy { + for dev in /sys/class/net/*; do + test -f $dev/phy80211/name && phy=$(cat $dev/phy80211/name 2>/dev/null) + if [[ "$phy" = "$1" ]]; then + IFACE_NEW=$(basename $dev) + break + else + IFACE_NEW='' + fi + done +} + +function _cleanup { + docker stop openwrt_1 + while [[ -z $IFACE_NEW ]]; do + _get_dev_from_phy $PHY + sleep 1 + done + sudo ip link set dev $IFACE_NEW down + sudo ip link set dev $IFACE_NEW name $IFACE +} + + +nmcli dev set $IFACE managed no +# sudo iw phy $PHY interface add $IFACE_AP type managed + +docker run --rm -it \ + --network=bridge \ + -p8080:80 -d \ + --cap-add NET_ADMIN \ + --cap-add NET_RAW \ + --name $CONTAINER openwrt + +pid=$(docker inspect -f '{{.State.Pid}}' $CONTAINER) + +sudo iw phy "$PHY" set netns $pid + + +trap "_cleanup" EXIT +cat diff --git a/wireless b/wireless new file mode 100644 index 0000000..5639979 --- /dev/null +++ b/wireless @@ -0,0 +1,14 @@ +config 'wifi-device' 'wlan0' + option 'type' 'mac80211' + option 'macaddr' '18:d6:c7:1b:dc:95' + option 'hwmode' '11a' + option 'channel' '36' + option 'vhtmode' 'VHT20' + +config 'wifi-iface' 'wl0' + option 'device' 'wlan0' + option 'network' 'lan' + option 'mode' 'ap' + option 'ssid' 'test123' + option 'encryption' 'psk2' + option 'key' '12345678' \ No newline at end of file