RK3588 firefly net
RK3588 firefly net
firefly@firefly:~$
firefly@firefly:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
firefly@firefly:~$
firefly@firefly:~$ uname -a
Linux firefly 5.10.198 #50 SMP Tue Dec 9 14:15:36 CST 2025 aarch64 aarch64 aarch64 GNU/Linux
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30569
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 30569
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ free -h
total used free shared buff/cache available
Mem: 7.5Gi 1.9Gi 4.2Gi 308Mi 1.4Gi 5.2Gi
Swap: 0B 0B 0B
firefly@firefly:~$
firefly@firefly:~$ blkid
/dev/mmcblk0p3: LABEL="boot" UUID="2e622061-07f7-4bdd-8255-b20421e325e4" TYPE="ext4" PARTLABEL="boot" PARTUUID="a5250000-0000-4c47-8000-11b6000039c2"
/dev/mmcblk0p6: LABEL="Ubuntu20.04" UUID="2c3d82c1-b442-4cb7-898d-15215d340b4e" TYPE="ext4" PARTLABEL="rootfs" PARTUUID="614e0000-0000-4b53-8000-1d28000054a9"
/dev/mmcblk0p7: LABEL="userdata" UUID="21664833-7245-4186-a2e8-763a49a7f2ab" TYPE="ext4" PARTLABEL="userdata" PARTUUID="870d0000-0000-4753-8000-23a20000034e"
/dev/mmcblk0p1: PARTLABEL="uboot" PARTUUID="49330000-0000-4844-8000-4d700000624b"
/dev/mmcblk0p2: PARTLABEL="misc" PARTUUID="4c2a0000-0000-4415-8000-48bb000035ac"
/dev/mmcblk0p4: PARTLABEL="recovery" PARTUUID="3d2a0000-0000-4611-8000-5d49000064f6"
/dev/mmcblk0p5: PARTLABEL="backup" PARTUUID="fa360000-0000-4b62-8000-535c000062ae"
firefly@firefly:~$
firefly@firefly:~$ fdisk -l /dev/sda
Disk /dev/sda: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Disk model: V300 500G-SSDV04
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /etc/mtab
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=3912872k,nr_inodes=978218,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=784256k,mode=755 0 0
/dev/mmcblk0p6 /root-ro ext4 ro,relatime 0 0
/dev/mmcblk0p7 /userdata ext4 rw,relatime 0 0
overlayroot / overlay rw,relatime,lowerdir=/root-ro,upperdir=/userdata/rootfs_overlay,workdir=/userdata/rootfs_overlay-workdir/_ 0 0
/root/dev/mmcblk0p3 /boot ext4 rw,relatime 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
none /sys/fs/bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,nosuid,nodev,noexec,relatime 0 0
tracefs /sys/kernel/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,nosuid,nodev,noexec,relatime 0 0
configfs /sys/kernel/config configfs rw,nosuid,nodev,noexec,relatime 0 0
adb /dev/usb-ffs/adb functionfs rw,relatime 0 0
tracefs /sys/kernel/debug/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=784252k,mode=700,uid=1000,gid=1000 0 0
overlay /userdata/docker/overlay2/984fef22c4d5c09bf163012040db254e9a3301c61876d453efec61556e35c08d/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/F53GNXUWD2J5364HHVW5P26REU:/userdata/docker/overlay2/l/EX2YRB4IM3WYVJSVWH3WI2MKV6:/userdata/docker/overlay2/l/NWWKCUKHWPROSK4WBIF5KFAC5F:/userdata/docker/overlay2/l/F6L5Y4RW7OMZEH33Y7INMOSOX5:/userdata/docker/overlay2/l/6ZHYTANO4JUZBXGR3RS4GJPNEG:/userdata/docker/overlay2/l/K3LTSLGXPIXGESM4DIRRDBZCTT:/userdata/docker/overlay2/l/3TUB3QGJWCA4PAOZZD7ICZD6M2:/userdata/docker/overlay2/l/W3JPWKZC2ONVBOBGK7R7XLWF6F,upperdir=/userdata/docker/overlay2/984fef22c4d5c09bf163012040db254e9a3301c61876d453efec61556e35c08d/diff,workdir=/userdata/docker/overlay2/984fef22c4d5c09bf163012040db254e9a3301c61876d453efec61556e35c08d/work 0 0
overlay /userdata/docker/overlay2/b6236641d4966539aea653a280f856f8f7600efa9aaecd64267301bad7229f00/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/LLRJBIGSX6D4MDV2LNPD4OUCU2:/userdata/docker/overlay2/l/XN2XEBIDBR4H2QQNPNEMJYQOD2:/userdata/docker/overlay2/l/TNYKVPYZQWQ4EIHYCEBHGTWMBF,upperdir=/userdata/docker/overlay2/b6236641d4966539aea653a280f856f8f7600efa9aaecd64267301bad7229f00/diff,workdir=/userdata/docker/overlay2/b6236641d4966539aea653a280f856f8f7600efa9aaecd64267301bad7229f00/work 0 0
overlay /userdata/docker/overlay2/f74056cab483ef3c433e8721126f9b81678f5a1a23f09855050454f14f702cae/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/GG53SMPRBK7235ERX3G7PENOLK:/userdata/docker/overlay2/l/LEJOJTLHZU6YS4MKE4EH73Z5OI,upperdir=/userdata/docker/overlay2/f74056cab483ef3c433e8721126f9b81678f5a1a23f09855050454f14f702cae/diff,workdir=/userdata/docker/overlay2/f74056cab483ef3c433e8721126f9b81678f5a1a23f09855050454f14f702cae/work 0 0
overlay /userdata/docker/overlay2/e459bbcde317b62dc08567a3cf246f26233cf39d6775a9c495d26d5e39cab0e4/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/VVLEB6CT6X4VDW2S3MJ3SBM7ZO:/userdata/docker/overlay2/l/MSZXHHDRIBXFKXYQLPOCYGIQKW:/userdata/docker/overlay2/l/RAQ7TGANMW6VDWV4GTXNJTAVGT:/userdata/docker/overlay2/l/UOCNWTU7HGWWQ43RATER55OKIM:/userdata/docker/overlay2/l/KQ2IRE3CBSPXDZQTUD6YM63XMY:/userdata/docker/overlay2/l/5KK2AUDDR5A45KPFECHSWFLDTT:/userdata/docker/overlay2/l/A5VHJ5JPYQHQX7XC76S3ALZYKO:/userdata/docker/overlay2/l/WDHMDPZ4FIKFLM5Z7RWZOFBOTO:/userdata/docker/overlay2/l/42LFPGA6JLPJPEYIZMDJB2VSMN,upperdir=/userdata/docker/overlay2/e459bbcde317b62dc08567a3cf246f26233cf39d6775a9c495d26d5e39cab0e4/diff,workdir=/userdata/docker/overlay2/e459bbcde317b62dc08567a3cf246f26233cf39d6775a9c495d26d5e39cab0e4/work 0 0
overlay /userdata/docker/overlay2/978b66336ae4e32b7e11a1abe5387dcf800b96d9f8328e435fd4e7bec8757b81/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/5BL4CAPC5BW6AQVOAV7I6YYS2J:/userdata/docker/overlay2/l/BR2L3VYNONJBEYZLFLCDVTVOKN:/userdata/docker/overlay2/l/GHILWISQ4ADPAIHJHKUNJDLS76:/userdata/docker/overlay2/l/CSDF423EZNMX2NLV32ZMAGPQ23:/userdata/docker/overlay2/l/7TCP3BXZFP7RGB3SULBWS7RPJN:/userdata/docker/overlay2/l/SCXOBWKCBZ6MRWXEF3EHJJ6IZI:/userdata/docker/overlay2/l/SHI7CSRG22LZPC47T2YEA5A3SU:/userdata/docker/overlay2/l/5LNA2MLRQMFDVJ2ZJ4IPGCCBFU:/userdata/docker/overlay2/l/42LFPGA6JLPJPEYIZMDJB2VSMN,upperdir=/userdata/docker/overlay2/978b66336ae4e32b7e11a1abe5387dcf800b96d9f8328e435fd4e7bec8757b81/diff,workdir=/userdata/docker/overlay2/978b66336ae4e32b7e11a1abe5387dcf800b96d9f8328e435fd4e7bec8757b81/work 0 0
overlay /userdata/docker/overlay2/8457966d7a75d181da044757793b8c491084930413e18c6961ad368e56379f54/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/NOFZUD2CGZOMDUYE3X7SH2KLQX:/userdata/docker/overlay2/l/K5N5GFRK3D53FXEBINWWGARW6R:/userdata/docker/overlay2/l/ZZ67TQFWRQLV6PDUF7HAD25IWH:/userdata/docker/overlay2/l/GZNZJ2VJ7PCFEHXNNAW54CSL3U:/userdata/docker/overlay2/l/5U5JBVTTEOI46WSZ3M5UOBGV6L:/userdata/docker/overlay2/l/LIQDPPWAVCEFM2UHAAJ42R3GB7:/userdata/docker/overlay2/l/XQSWKIFW5QKMH6XPRWSOP6ZOWP:/userdata/docker/overlay2/l/HCPJ5BFUNHQUVODV3VQX35XWC5:/userdata/docker/overlay2/l/KRXEJQGD5IGKNCL7C5ZEH3752T:/userdata/docker/overlay2/l/U2OZ46F4IFXQT745JAUDR5O7AT:/userdata/docker/overlay2/l/B7MPRCXLGWECIKO2VYTAXVG5UR,upperdir=/userdata/docker/overlay2/8457966d7a75d181da044757793b8c491084930413e18c6961ad368e56379f54/diff,workdir=/userdata/docker/overlay2/8457966d7a75d181da044757793b8c491084930413e18c6961ad368e56379f54/work 0 0
overlay /userdata/docker/overlay2/3a679d3636ac9b31e472f53bdc25a922c87e276776373b9f6134701486086f55/merged overlay rw,relatime,lowerdir=/userdata/docker/overlay2/l/QCE2MXURPRZKEDKQFC4CBARGH4:/userdata/docker/overlay2/l/NHO6PFT7HM4NIAS5T5L5GOLYUF:/userdata/docker/overlay2/l/3XEW6KRSKBR4SZVPAN7U3PR4CQ:/userdata/docker/overlay2/l/O2HGDNNVM33VSJDXWEETTQFEIG:/userdata/docker/overlay2/l/2I55QSKMPZT5OWZ3LYFL6WM25L:/userdata/docker/overlay2/l/E5H22ERGW4RF22XO5HG6NMYXKO,upperdir=/userdata/docker/overlay2/3a679d3636ac9b31e472f53bdc25a922c87e276776373b9f6134701486086f55/diff,workdir=/userdata/docker/overlay2/3a679d3636ac9b31e472f53bdc25a922c87e276776373b9f6134701486086f55/work 0 0
nsfs /run/docker/netns/default nsfs rw 0 0
gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
nsfs /run/docker/netns/03168d0db25c nsfs rw 0 0
nsfs /run/docker/netns/9ce988f5f906 nsfs rw 0 0
nsfs /run/docker/netns/927b29644417 nsfs rw 0 0
nsfs /run/docker/netns/6b8f63478f0d nsfs rw 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=784252k,mode=700 0 0
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /proc/partitions
major minor #blocks name
1 0 4096 ram0
179 0 61071360 mmcblk0
179 1 8192 mmcblk0p1
179 2 4096 mmcblk0p2
179 3 262144 mmcblk0p3
179 4 131072 mmcblk0p4
179 5 32768 mmcblk0p5
179 6 6291456 mmcblk0p6
179 7 54333423 mmcblk0p7
8 0 488386584 sda
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /proc/mtd
dev: size erasesize name
firefly@firefly:~$
firefly@firefly:~$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 3.8G 8.0K 3.8G 1% /dev
tmpfs tmpfs 766M 2.3M 764M 1% /run
/dev/mmcblk0p6 ext4 2.4G 2.2G 16M 100% /root-ro
/dev/mmcblk0p7 ext4 51G 9.9G 39G 21% /userdata
overlayroot overlay 51G 9.9G 39G 21% /
/root/dev/mmcblk0p3 ext4 224M 92M 115M 45% /boot
tmpfs tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs tmpfs 766M 12K 766M 1% /run/user/1000
tmpfs tmpfs 766M 0 766M 0% /run/user/0
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ ls -alh / total 104K drwxr-xr-x 1 root root 4.0K Jun 21 2024 . drwxr-xr-x 1 root root 4.0K Jun 21 2024 .. lrwxrwxrwx 1 root root 7 Aug 30 2022 bin -> usr/bin drwxr-xr-x 5 root root 4.0K Dec 9 2025 boot drwxr-xr-x 6 root root 4.0K Jul 27 13:20 data drwxr-xr-x 19 root root 4.0K Jul 27 13:20 dev drwxr-xr-x 1 root root 4.0K Jul 27 13:20 etc drwxr-xr-x 1 root root 4.0K Jun 21 2024 home lrwxrwxrwx 1 root root 7 Aug 3 2023 lib -> usr/lib drwx------ 2 root root 16K Sep 10 2024 lost+found drwxr-xr-x 2 root root 4.0K Aug 30 2022 media drwxr-xr-x 2 root root 4.0K Aug 30 2022 mnt drwxr-xr-x 1 root root 4.0K Jun 21 2024 opt dr-xr-xr-x 374 root root 0 Jan 1 1970 proc drwx------ 1 root root 4.0K Jun 21 2024 root drwxr-xr-x 19 root root 4.0K Sep 10 2024 root-ro drwxr-xr-x 24 root root 700 Jul 27 13:20 run lrwxrwxrwx 1 root root 8 Aug 30 2022 sbin -> usr/sbin drwxr-xr-x 2 root root 4.0K Aug 30 2022 srv dr-xr-xr-x 14 root root 0 Jan 1 1970 sys drwxr-xr-x 4 root root 4.0K Aug 3 2023 system drwxrwxrwt 13 root root 4.0K Jul 27 13:20 tmp drwxr-xr-x 7 root root 4.0K Jan 1 1970 userdata drwxr-xr-x 1 root root 4.0K Jul 27 13:20 usr drwxr-xr-x 1 root root 4.0K Aug 30 2022 var drwxr-xr-x 3 root root 4.0K Aug 3 2023 vendor firefly@firefly:~$ firefly@firefly:~$ ls -alh /userdata/ total 40K drwxr-xr-x 7 root root 4.0K Jan 1 1970 . drwxr-xr-x 1 root root 4.0K Jun 21 2024 .. drwx--x--- 12 root root 4.0K Jul 27 13:20 docker drwx------ 2 root root 16K Jan 1 1970 lost+found drwxr-xr-x 2 root root 4.0K Jan 1 1970 recovery drwxr-xr-x 12 root root 4.0K Jun 21 2024 rootfs_overlay drwxr-xr-x 3 root root 4.0K Jan 1 1970 rootfs_overlay-workdir firefly@firefly:~$ firefly@firefly:~$ ls -alh /userdata/rootfs_overlay/ total 64K drwxr-xr-x 12 root root 4.0K Jun 21 2024 . drwxr-xr-x 7 root root 4.0K Jan 1 1970 .. drwxr-xr-x 6 root root 4.0K Jul 27 13:20 data drwxr-xr-x 16 root root 4.0K Jul 27 13:20 etc drwxr-xr-x 4 root root 4.0K Jun 21 2024 home drwxr-xr-x 3 root root 4.0K Jun 21 2024 opt drwx------ 3 root root 4.0K Jun 21 2024 root drwxr-xr-x 2 root root 4.0K Jan 1 1970 root-ro drwxrwxrwt 13 root root 4.0K Jul 27 13:20 tmp drwxr-xr-x 2 root root 4.0K Jan 1 1970 userdata drwxr-xr-x 8 root root 4.0K Jul 27 13:20 usr drwxr-xr-x 8 root root 4.0K Aug 30 2022 var firefly@firefly:~$ firefly@firefly:~$ ls -alh /userdata/rootfs_overlay-workdir/ total 12K drwxr-xr-x 3 root root 4.0K Jan 1 1970 . drwxr-xr-x 7 root root 4.0K Jan 1 1970 .. drwxr-xr-x 3 root root 4.0K Jan 1 1970 _ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ ls -alh /usr/local/bin/firefly/ total 24K drwxr-xr-x 2 root root 4.0K May 7 2024 . drwxr-xr-x 4 root root 4.0K Sep 10 2024 .. -rw-r--r-- 1 root root 309 May 7 2024 config -rwxr-xr-x 1 root root 90 Aug 24 2023 firefly-led.sh -rwxr-xr-x 1 root root 311 Aug 24 2023 firefly-net-check.sh -rwxr-xr-x 1 root root 828 May 7 2024 firefly-usb-check.sh firefly@firefly:~$ firefly@firefly:~$ ls -alh /usr/local/bin/model/ total 28K drwxrwxr-x 6 1007 1008 4.0K Sep 10 2024 . drwxr-xr-x 4 root root 4.0K Sep 10 2024 .. -rw-rw-rw- 1 1007 1008 621 Dec 7 2023 coco_80_labels_list.txt drwxrwxr-x 2 1007 1008 4.0K Sep 10 2024 RK3562 drwxrwxr-x 2 1007 1008 4.0K Sep 10 2024 RK3566_RK3568 drwxrwxr-x 2 1007 1008 4.0K Sep 10 2024 RK3588 drwxrwxr-x 2 1007 1008 4.0K Sep 10 2024 RV110X firefly@firefly:~$ firefly@firefly:~$ ls -alh /usr/local/bin/model/RK3588/ total 8.2M drwxrwxr-x 2 1007 1008 4.0K Sep 10 2024 . drwxrwxr-x 6 1007 1008 4.0K Sep 10 2024 .. -rw-rw-rw- 1 1007 1008 8.2M Dec 16 2023 yolov5s-640-640.rknn firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ ls -alh /usr/local/sbin/ total 28K drwxr-xr-x 1 root root 4.0K Jun 20 2024 . drwxr-xr-x 1 root root 4.0K Aug 3 2023 .. -rwxr-xr-x 1 root root 3.4K Aug 30 2022 unminimize -rwxr-xr-x 1 root root 1.3K Jun 20 2024 visionlink-camera-rtsp-forward.sh -rwxr-xr-x 1 root root 1.1K Jun 20 2024 visionlink-init-port-forward.sh -rwxr-xr-x 1 root root 247 Jun 21 2024 visionlink-init-static-network.sh firefly@firefly:~$ firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ ls -alh /usr/local/sbin/
total 24K
drwxr-xr-x 1 root root 4.0K Jun 20 2024 .
drwxr-xr-x 1 root root 4.0K Aug 3 2023 ..
-rwxr-xr-x 1 root root 3.4K Aug 29 2022 unminimize
-rwxr-xr-x 1 root root 1.9K Jun 20 2024 visionlink-init-port-forward.sh
-rwxr-xr-x 1 root root 247 Jun 20 2024 visionlink-init-static-network.sh
firefly@firefly:~$
firefly@firefly:~$ cat /usr/local/sbin/visionlink-init-port-forward.sh
#!/usr/bin/env bash
set -e
# 设置IP转发
if [ "$(sysctl -n net.ipv4.ip_forward)" -ne 1 ]; then
sysctl -w net.ipv4.ip_forward=1
fi
# 添加NTP端口转发
gw_addr=$(ip route show default | awk '{print $3}')
ntp_active=$( ss -alnup sport = :123 | tail -n +2 | wc -l )
if [ -n "$gw_addr" ] && [ "$ntp_active" -eq 0 ]; then
iptables -t nat -C PREROUTING -i eth1 -p udp --dport 123 -j DNAT --to-destination "$gw_addr":123 2>/dev/null ||
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 123 -j DNAT --to-destination "$gw_addr":123
iptables -t nat -C POSTROUTING -o eth0 -p udp -d "$gw_addr" --dport 123 -j MASQUERADE 2>/dev/null ||
iptables -t nat -A POSTROUTING -o eth0 -p udp -d "$gw_addr" --dport 123 -j MASQUERADE
fi
# 每项格式:“盒子入口端口 摄像头IP 摄像头目标端口”。
# 前四项将盒子 8081~8084 映射到四台摄像头的 Web 端口 80;
# 后四项将盒子 555~558 映射到四台摄像头的 RTSP 端口 554。
for rule in \
"8081 192.168.200.201 80" \
"8082 192.168.200.202 80" \
"8083 192.168.200.203 80" \
"8084 192.168.200.204 80" \
"555 192.168.200.201 554" \
"556 192.168.200.202 554" \
"557 192.168.200.203 554" \
"558 192.168.200.204 554"; do
set -- $rule
port="$1"
dst="$2"
dst_port="$3"
# 同一入口端口只保留当前目标,避免升级旧脚本后错误规则仍优先命中。
while true; do
rule_number=$(iptables -t nat -L PREROUTING -n --line-numbers | \
awk -v target="dpt:$port" '$0 ~ target {print $1; exit}')
[ -n "$rule_number" ] || break
iptables -t nat -D PREROUTING "$rule_number"
done
iptables -t nat -A PREROUTING -p tcp --dport "$port" \
-j DNAT --to-destination "$dst:$dst_port"
if ! iptables -t nat -C POSTROUTING -p tcp -d "$dst" --dport "$dst_port" \
-j MASQUERADE 2>/dev/null; then
iptables -t nat -A POSTROUTING -p tcp -d "$dst" --dport "$dst_port" \
-j MASQUERADE
fi
if ! iptables -C FORWARD -p tcp -d "$dst" --dport "$dst_port" \
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT 2>/dev/null; then
iptables -I FORWARD 1 -p tcp -d "$dst" --dport "$dst_port" \
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
fi
if ! iptables -C FORWARD -p tcp -s "$dst" --sport "$dst_port" \
-m conntrack --ctstate ESTABLISHED -j ACCEPT 2>/dev/null; then
iptables -I FORWARD 1 -p tcp -s "$dst" --sport "$dst_port" \
-m conntrack --ctstate ESTABLISHED -j ACCEPT
fi
done
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /usr/local/sbin/visionlink-init-static-network.sh
#!/usr/bin/env bash
set -e
ip link set "eth0" up || true
ip link set "eth1" up || true
ip addr replace "192.168.100.249/24" dev "eth0"
ip addr replace "192.168.200.200/24" dev "eth1"
ip route replace default via "192.168.100.1" dev "eth0" || true
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /etc/systemd/system/visionlink-init-port-forward.service
[Unit]
Description=VisionLink RK3588 camera TCP port forwarding
After=visionlink-init-static-network.service network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/visionlink-init-port-forward.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ cat /etc/systemd/system/visionlink-init-static-network.service
[Unit]
Description=Set VisionLink RK3588 static network addresses
After=NetworkManager.service network-pre.target
Wants=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/visionlink-init-static-network.sh
[Install]
WantedBy=multi-user.target
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo systemctl status visionlink-init-port-forward.service
● visionlink-init-port-forward.service - VisionLink RK3588 camera TCP port forwarding
Loaded: loaded (/etc/systemd/system/visionlink-init-port-forward.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2024-06-20 09:58:47 UTC; 1h 45min ago
Main PID: 822 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 9170)
Memory: 0B
CGroup: /system.slice/visionlink-init-port-forward.service
Jun 20 09:58:47 firefly systemd[1]: Starting VisionLink RK3588 camera TCP port forwarding...
Jun 20 09:58:47 firefly systemd[1]: Finished VisionLink RK3588 camera TCP port forwarding.
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo systemctl status visionlink-init-static-network.service
● visionlink-init-static-network.service - Set VisionLink RK3588 static network addresses
Loaded: loaded (/etc/systemd/system/visionlink-init-static-network.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2024-06-20 09:58:47 UTC; 1h 45min ago
Main PID: 789 (code=exited, status=0/SUCCESS)
Jun 20 09:58:47 firefly systemd[1]: Starting Set VisionLink RK3588 static network addresses...
Jun 20 09:58:47 firefly systemd[1]: visionlink-init-static-network.service: Succeeded.
Jun 20 09:58:47 firefly systemd[1]: Finished Set VisionLink RK3588 static network addresses.
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection
[connection]
id=Wired connection 1
uuid=cdc0dddd-613f-382e-badf-d64e180a25c1
type=ethernet
autoconnect-priority=100
interface-name=eth0
permissions=
timestamp=1718883527
[ethernet]
mac-address-blacklist=
[ipv4]
address1=192.168.100.249/24,192.168.100.1
dns=114.114.114.114;223.5.5.5;8.8.8.8;
dns-search=
method=manual
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=ignore
[proxy]
firefly@firefly:~$
firefly@firefly:~$ sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 2.nmconnection
[connection]
id=Wired connection 2
uuid=82d56152-aae4-3f53-84f6-d37769d3b0cc
type=ethernet
autoconnect-priority=100
interface-name=eth1
permissions=
[ethernet]
mac-address-blacklist=
[ipv4]
address1=192.168.200.200/24
dns-search=
method=manual
never-default=true
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=ignore
[proxy]
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo cat /etc/systemd/resolved.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
firefly@firefly:~$
firefly@firefly:~$ sudo systemctl restart systemd-resolved.service
firefly@firefly:~$
firefly@firefly:~$ sudo resolvectl status
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 15 (veth8dc98aa)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 13 (veth16676ee)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 11 (veth424ca26)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 9 (veth3b7ced0)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 7 (docker0)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 6 (br-3434bd3a7128)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 5 (eth1)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 4 (eth0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 114.114.114.114
223.5.5.5
8.8.8.8
DNS Domain: ~.
Link 3 (can0)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 2 (dummy0)
Current Scopes: none
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo resolvectl statistics
DNSSEC supported by current servers: no
Transactions
Current Transactions: 0
Total Transactions: 0
Cache
Current Cache Size: 0
Cache Hits: 0
Cache Misses: 0
DNSSEC Verdicts
Secure: 0
Insecure: 0
Bogus: 0
Indeterminate: 0
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ journalctl -u systemd-resolved -n 10 -f
-- Logs begin at Thu 2024-06-20 09:58:46 UTC. --
Jun 22 02:57:14 firefly systemd-resolved[594]: Using degraded feature set (UDP) for DNS server 233.5.5.5.
-- Reboot --
Jul 28 04:56:52 firefly systemd[1]: Stopping Network Name Resolution...
Jul 28 04:56:52 firefly systemd[1]: systemd-resolved.service: Succeeded.
Jul 28 04:56:52 firefly systemd[1]: Stopped Network Name Resolution.
Jul 28 04:56:52 firefly systemd[1]: Starting Network Name Resolution...
Jul 28 04:56:52 firefly systemd-resolved[70029]: Positive Trust Anchors:
Jul 28 04:56:52 firefly systemd-resolved[70029]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d
Jul 28 04:56:52 firefly systemd-resolved[70029]: Negative trust anchors: 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa 168.192.in-addr.arpa d.f.ip6.arpa corp home internal intranet lan local private test
Jul 28 04:56:52 firefly systemd-resolved[70029]: Using system hostname 'firefly'.
Jul 28 04:56:52 firefly systemd[1]: Started Network Name Resolution.
^C
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ date "+%Y-%m-%d %H:%M:%S %Z (UTC%:z) (%A)"
2026-07-28 04:57:55 UTC (UTC+00:00) (Tuesday)
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo timedatectl set-timezone Asia/Shanghai
firefly@firefly:~$
firefly@firefly:~$ timedatectl show
Timezone=Asia/Shanghai
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Tue 2026-07-28 12:58:57 CST
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ timedatectl status
Local time: Tue 2026-07-28 12:59:07 CST
Universal time: Tue 2026-07-28 04:59:07 UTC
RTC time: n/a
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo cat /etc/systemd/timesyncd.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo systemctl restart systemd-timesyncd.service
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ timedatectl show-timesync
FallbackNTPServers=ntp.ubuntu.com
ServerName=ntp.ubuntu.com
ServerAddress=185.125.190.56
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-25, RootDelay=5.584ms, RootDispersion=1.129ms, Reference=63DC0885, OriginateTimestamp=Tue 2026-07-28 12:59:29 CST, ReceiveTimestamp=Tue 2026-07-28 12:59:29 CST, TransmitTimestamp=Tue 2026-07-28 12:59:29 CST, DestinationTimestamp=Tue 2026-07-28 12:59:29 CST, Ignored=no PacketCount=1, Jitter=0 }
Frequency=14707673
firefly@firefly:~$
firefly@firefly:~$ timedatectl timesync-status
Server: 185.125.190.56 (ntp.ubuntu.com)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: 63DC0885
Precision: 1us (-25)
Root distance: 3.921ms (max: 5s)
Offset: +26.659ms
Delay: 235.155ms
Jitter: 0
Packet count: 1
Frequency: +224.421ppm
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ timedatectl --monitor
Local time: Tue 2026-07-28 13:00:02 CST
Universal time: Tue 2026-07-28 05:00:02 UTC
RTC time: n/a
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ journalctl -u systemd-timesyncd -n 10 -f
-- Logs begin at Thu 2024-06-20 17:58:46 CST. --
Jun 20 20:42:51 firefly systemd[1]: systemd-timesyncd.service: Succeeded.
Jun 20 20:42:51 firefly systemd[1]: Starting Network Time Synchronization...
Jun 20 20:42:51 firefly systemd[1]: Started Network Time Synchronization.
-- Reboot --
Jul 28 11:35:36 firefly systemd-timesyncd[3254]: Initial synchronization to time server 91.189.91.157:123 (ntp.ubuntu.com).
Jul 28 12:59:29 firefly systemd[1]: Stopping Network Time Synchronization...
Jul 28 12:59:29 firefly systemd[1]: systemd-timesyncd.service: Succeeded.
Jul 28 12:59:29 firefly systemd[1]: Stopped Network Time Synchronization.
Jul 28 12:59:29 firefly systemd[1]: Starting Network Time Synchronization...
Jul 28 12:59:29 firefly systemd[1]: Started Network Time Synchronization.
Jul 28 12:59:29 firefly systemd-timesyncd[70923]: Initial synchronization to time server 185.125.190.56:123 (ntp.ubuntu.com).
^C
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ date "+%Y-%m-%d %H:%M:%S %Z (UTC%:z) (%A)"
2026-07-28 13:00:37 CST (UTC+08:00) (Tuesday)
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-3434bd3a7128
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
firefly@firefly:~$
firefly@firefly:~$ sudo ip route show
default via 192.168.100.1 dev eth0
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.21.0.0/16 dev br-3434bd3a7128 proto kernel scope link src 172.21.0.1
192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.249
192.168.200.0/24 dev eth1 proto kernel scope link src 192.168.200.200
firefly@firefly:~$
firefly@firefly:~$ sudo ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 2a:e9:b3:d8:d2:da brd ff:ff:ff:ff:ff:ff
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 6e:fc:ba:77:37:7e brd ff:ff:ff:ff:ff:ff
inet 192.168.100.249/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::6cfc:baff:fe77:377e/64 scope link
valid_lft forever preferred_lft forever
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 6a:fc:ba:77:37:7e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.200/24 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::68fc:baff:fe77:377e/64 scope link
valid_lft forever preferred_lft forever
6: br-3434bd3a7128: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:62:2d:84:04 brd ff:ff:ff:ff:ff:ff
inet 172.21.0.1/16 brd 172.21.255.255 scope global br-3434bd3a7128
valid_lft forever preferred_lft forever
inet6 fe80::42:62ff:fe2d:8404/64 scope link
valid_lft forever preferred_lft forever
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:70:d8:a0:e9 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
9: veth3b7ced0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP group default
link/ether 62:13:43:66:c4:d3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::6013:43ff:fe66:c4d3/64 scope link
valid_lft forever preferred_lft forever
11: veth424ca26@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP group default
link/ether 76:1b:2b:a0:61:a6 brd ff:ff:ff:ff:ff:ff link-netnsid 3
inet6 fe80::741b:2bff:fea0:61a6/64 scope link
valid_lft forever preferred_lft forever
13: veth16676ee@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP group default
link/ether 66:09:ba:23:51:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 2
inet6 fe80::6409:baff:fe23:51f0/64 scope link
valid_lft forever preferred_lft forever
15: veth8dc98aa@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP group default
link/ether d6:8b:37:84:37:ef brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::d48b:37ff:fe84:37ef/64 scope link
valid_lft forever preferred_lft forever
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 2a:e9:b3:d8:d2:da brd ff:ff:ff:ff:ff:ff
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 6e:fc:ba:77:37:7e brd ff:ff:ff:ff:ff:ff
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 6a:fc:ba:77:37:7e brd ff:ff:ff:ff:ff:ff
6: br-3434bd3a7128: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:62:2d:84:04 brd ff:ff:ff:ff:ff:ff
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:70:d8:a0:e9 brd ff:ff:ff:ff:ff:ff
9: veth3b7ced0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP mode DEFAULT group default
link/ether 62:13:43:66:c4:d3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
11: veth424ca26@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP mode DEFAULT group default
link/ether 76:1b:2b:a0:61:a6 brd ff:ff:ff:ff:ff:ff link-netnsid 3
13: veth16676ee@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP mode DEFAULT group default
link/ether 66:09:ba:23:51:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 2
15: veth8dc98aa@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-3434bd3a7128 state UP mode DEFAULT group default
link/ether d6:8b:37:84:37:ef brd ff:ff:ff:ff:ff:ff link-netnsid 1
firefly@firefly:~$
firefly@firefly:~$ sudo bridge link show
9: veth3b7ced0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-3434bd3a7128 state forwarding priority 32 cost 2
11: veth424ca26@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-3434bd3a7128 state forwarding priority 32 cost 2
13: veth16676ee@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-3434bd3a7128 state forwarding priority 32 cost 2
15: veth8dc98aa@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-3434bd3a7128 state forwarding priority 32 cost 2
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67581849930f 192.168.1.7/visionlink/vision-link-edge-server:2.3.9-arm "/bin/sh -c 'java ${…" 2 years ago Up 2 years visionlink-edge-service-1
1af68e0e1607 192.168.1.7/visionlink/vision-link-edge-web:2.3.9-arm "/docker-entrypoint.…" 2 years ago Up 2 years 11110/tcp, 0.0.0.0:21180->80/tcp, :::21180->80/tcp visionlink-edge-web-1
af5426d013bd 192.168.1.7/visionlink/visionlink-mediaserver:1.3.1 "/bin/sh -c ./MediaS…" 2 years ago Up 2 years visionlink-edge-mediaserver-1
38adc75ba5e5 arm64v8/redis "docker-entrypoint.s…" 2 years ago Up 2 years 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp visionlink-redis-1
d89fdec6ac2f arm64v8/nginx:2.2.0 "/docker-entrypoint.…" 2 years ago Up 2 years 80/tcp, 0.0.0.0:80->11110/tcp, :::80->11110/tcp visionlink-nginx-1
a1e48a63da33 bitnami/mysql:5.7.42 "/opt/bitnami/script…" 2 years ago Up 2 years 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp visionlink-mysql-1
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.7/visionlink/vision-link-edge-web 2.3.9-arm b2d2ff537b20 27 hours ago 332MB
192.168.1.7/visionlink/vision-link-edge-server 2.3.9-arm d1e3bf0514fe 27 hours ago 834MB
192.168.1.7/visionlink/vision-link-record-worker 2.3.9-arm f96a11dea313 3 days ago 1.33GB
arm64v8/nginx 2.2.0 b3aeac8b030d 13 months ago 192MB
192.168.1.7/visionlink/visionlink-mediaserver 1.3.1 fea0b5d4dadd 2 years ago 383MB
arm64v8/redis latest 2b2301a9e36e 2 years ago 158MB
bitnami/mysql 5.7.42 d8ffd11d3a3e 3 years ago 415MB
firefly@firefly:~$
firefly@firefly:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
fc4ddcf9095d bridge bridge local
33fca4629a93 host host local
2f5d37025d4d none null local
3434bd3a7128 visionlink_visionlink-network bridge local
firefly@firefly:~$
firefly@firefly:~$ docker volume ls
DRIVER VOLUME NAME
local 9458825c9d1847b7b10821b9ace03940433f6902558f66e861634440ef551dfb
local a92c8e894aa40763f73d5530eadacae32d013dae8a8cb015b016525cd751925e
local cc83771efc182b6ac851ea35d3cee3cd17f11870e8c4d6898156dea524eb751a
local e7b6f197a8910f9883e533ee73b204f7d51226e612eba30152507476f56c35d0
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker inspect visionlink-edge-service-1
[
{
"Id": "67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e",
"Created": "2024-06-20T12:41:26.681985175Z",
"Path": "/bin/sh",
"Args": [
"-c",
"java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.config.location=${CONFIG_LOCATION} ${SPRING_OPTS}"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1709,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-06-20T09:58:51.255588569Z",
"FinishedAt": "2024-06-20T09:58:49.928023269Z"
},
"Image": "sha256:d1e3bf0514fe8f097757516e78ee262a8cb89fc7bff4dc86a2f1470b18a28414",
"ResolvConfPath": "/userdata/docker/containers/67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e/resolv.conf",
"HostnamePath": "/userdata/docker/containers/67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e/hostname",
"HostsPath": "/userdata/docker/containers/67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e/hosts",
"LogPath": "/userdata/docker/containers/67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e/67581849930f3e40fb8f5ccf6b77b1b577568cd18dc537b917530532e248a67e-json.log",
"Name": "/visionlink-edge-service-1",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/home/wondertek/visionlink/app/file:/home/wondertek/visionlink/app/file:rw",
"/home/wondertek/visionlink/license:/home/wondertek/license:rw",
"/sbin/dmidecode:/sbin/dmidecode:rw",
"/home/wondertek/visionlink/data/alarm_video:/mnt/disk/alarm_video:rw",
"/home/wondertek/visionlink/file/temp/LifeJacketTempPic:/data/box/LifeJacketTempPic:rw",
"/home/wondertek/visionlink/file/temp/HumanTempPic:/data/box/HumanTempPic:rw",
"/home/wondertek/visionlink/logs/edge-service:/data/logs/vision-link-edge-server:rw",
"/home/wondertek/visionlink/conf/edge-service:/app/conf:rw",
"/home/wondertek/visionlink/data/sdk:/sdk:rw",
"/home/wondertek/visionlink/alarm/alarm_video:/home/wondertek/visionlink/alarm/alarm_video:rw",
"/:/host:rw",
"/dev/mem:/dev/mem:rw",
"/home/wondertek/structureData:/home/wondertek/structureData:rw",
"/home/wondertek/visionlink/alarm:/home/wondertek/visionlink/alarm:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "host",
"PortBindings": {},
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [
"host.docker.internal:host-gateway"
],
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": true,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [
"label=disable"
],
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 1610612736,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 3221225472,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": null,
"ReadonlyPaths": null
},
"GraphDriver": {
"Data": {
"LowerDir": "/userdata/docker/overlay2/a35776de68b78204b70263b25fa842c3583e40d5b5123990b883f4b76eabbf6b-init/diff:/userdata/docker/overlay2/f8826a506023569d4743e4347f3a0bf14186c72ee36ecd6905f2fbf94f0f3d68/diff:/userdata/docker/overlay2/1bc899325edfbc16c6936fcdc34a0689b05f3d1ed03121a7c8c2ad84ac15cd01/diff:/userdata/docker/overlay2/11e33d2770c6a251544d1c8209b57930208eac7d31d3dfef9f2dfc2795805fdc/diff:/userdata/docker/overlay2/d84a2c531ff22dfc92c8179038f652e6b86e463e7c51288927d06e050826f272/diff:/userdata/docker/overlay2/cb30c6bdb09c89fc1ff4559560d870d8ba3a717e3e7fd36f913798c3ab554e8a/diff:/userdata/docker/overlay2/f35367d987b7518f7d44b6424b9377180134512fe1043c46063dfcd3656ca703/diff",
"MergedDir": "/userdata/docker/overlay2/a35776de68b78204b70263b25fa842c3583e40d5b5123990b883f4b76eabbf6b/merged",
"UpperDir": "/userdata/docker/overlay2/a35776de68b78204b70263b25fa842c3583e40d5b5123990b883f4b76eabbf6b/diff",
"WorkDir": "/userdata/docker/overlay2/a35776de68b78204b70263b25fa842c3583e40d5b5123990b883f4b76eabbf6b/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/file/temp/HumanTempPic",
"Destination": "/data/box/HumanTempPic",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/license",
"Destination": "/home/wondertek/license",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/structureData",
"Destination": "/home/wondertek/structureData",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/sbin/dmidecode",
"Destination": "/sbin/dmidecode",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/data/sdk",
"Destination": "/sdk",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/conf/edge-service",
"Destination": "/app/conf",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/file/temp/LifeJacketTempPic",
"Destination": "/data/box/LifeJacketTempPic",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/logs/edge-service",
"Destination": "/data/logs/vision-link-edge-server",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/alarm",
"Destination": "/home/wondertek/visionlink/alarm",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/alarm/alarm_video",
"Destination": "/home/wondertek/visionlink/alarm/alarm_video",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/dev/mem",
"Destination": "/dev/mem",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/",
"Destination": "/host",
"Mode": "rw",
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/data/alarm_video",
"Destination": "/mnt/disk/alarm_video",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/app/file",
"Destination": "/home/wondertek/visionlink/app/file",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "firefly",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"CONFIG_LOCATION=/app/conf/",
"JAVA_OPTS=-Xmx1536m",
"SPRING_PROFILES_ACTIVE=prod",
"PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/usr/local/openjdk-8",
"SPRING_OUTPUT_ANSI_ENABLED=ALWAYS",
"SPRING_OPTS=",
"LD_LIBRARY_PATH=/app/xffmpeg:"
],
"Cmd": [
"/bin/sh",
"-c",
"java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.config.location=${CONFIG_LOCATION} ${SPRING_OPTS}"
],
"Image": "192.168.1.7/visionlink/vision-link-edge-server:2.3.9-arm",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "f54de3e62d501b7b9c2728d77cc154faeee76502ba28efec969b2e6f21dd51fa",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:d1e3bf0514fe8f097757516e78ee262a8cb89fc7bff4dc86a2f1470b18a28414",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "visionlink",
"com.docker.compose.project.config_files": "/home/wondertek/visionlink/docker-compose.yml",
"com.docker.compose.project.working_dir": "/home/wondertek/visionlink",
"com.docker.compose.service": "edge-service",
"com.docker.compose.version": "2.35.1",
"org.opencontainers.image.revision": "1e5406757a81627d416715466db67853dc96a5ff",
"org.opencontainers.image.version": "2.3.9"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "9b94bdd986cc0268908263933f3c8ec5122a945bbc00cc904019b7f9cac78fe3",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/default",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "33fca4629a93635f6bfc09d3e383d3cdc6f73c44ea954c1e5799ad5162a807ab",
"EndpointID": "9105e8eabb108c359c992faba83279525bc31c49917324f0119ec2e41f0874df",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker inspect visionlink-edge-web-1
[
{
"Id": "1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df",
"Created": "2024-06-20T12:41:25.770473Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1889,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-06-20T09:58:51.714800574Z",
"FinishedAt": "2024-06-20T09:58:49.92116531Z"
},
"Image": "sha256:b2d2ff537b206a821db24d8a62437e8870c84c8ef3ef9edb06784d48d83c5319",
"ResolvConfPath": "/userdata/docker/containers/1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df/resolv.conf",
"HostnamePath": "/userdata/docker/containers/1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df/hostname",
"HostsPath": "/userdata/docker/containers/1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df/hosts",
"LogPath": "/userdata/docker/containers/1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df/1af68e0e1607845f6bd676f8383274b80289ba0a2c4d5c8ec91fb37703f0d2df-json.log",
"Name": "/visionlink-edge-web-1",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/home/wondertek/visionlink/logs/web:/var/log/nginx:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "visionlink_visionlink-network",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "21180"
}
]
},
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [],
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/userdata/docker/overlay2/d89f126f2a85418a7a29283b9742d5a9a56a825d26e62650cca85b3f47c1ff52-init/diff:/userdata/docker/overlay2/98543396dd949a31ea118f73a41778e4a90a99a006afd9fe3c48b2d2cac7f7e4/diff:/userdata/docker/overlay2/aae06ee62612b7160afbdd4ed57b027620abb7dbf5b8da16071e233b5215d9ed/diff:/userdata/docker/overlay2/24479311d6948d6dff56945faf9472b62a5660bf5ff68011acea850b107cebc7/diff:/userdata/docker/overlay2/ed67ddda943ca054e8dc157ecd41325dc58f63f9ebfd1804a61c0ddf2045ae47/diff:/userdata/docker/overlay2/3ce6581b2d5ae4d83d6cdb16e524e41d977de84278e68a5e957c158eb597b8c8/diff:/userdata/docker/overlay2/6a99b4ea54d3b1d6b3ef7b6f46d9558233597fe1a3119744694a2ceefc038691/diff:/userdata/docker/overlay2/b57869a288491b7f7f46586443453dbc37e00f1fa52edfda862bb53c7b4c9b50/diff:/userdata/docker/overlay2/8d2c669f3f090a524d83f0dc94b71012e505be172dafc9c83847341aee732c3b/diff:/userdata/docker/overlay2/f487953a249a815f9673ea098938e742a3b452ac85189d2292fd170977e0f2c3/diff:/userdata/docker/overlay2/096e6f3dca7df22f68e5228d8a3f6c1969b89e8930f64627064dbc58f10076ef/diff:/userdata/docker/overlay2/9f9943171d17b67d71afeaa6be3d2adf1614d62b3f9fb65b483a140de05c4880/diff:/userdata/docker/overlay2/ff604be7a0cf05aaaafadfaf5d9cd7141b61e2901781a01022727417a3f03447/diff",
"MergedDir": "/userdata/docker/overlay2/d89f126f2a85418a7a29283b9742d5a9a56a825d26e62650cca85b3f47c1ff52/merged",
"UpperDir": "/userdata/docker/overlay2/d89f126f2a85418a7a29283b9742d5a9a56a825d26e62650cca85b3f47c1ff52/diff",
"WorkDir": "/userdata/docker/overlay2/d89f126f2a85418a7a29283b9742d5a9a56a825d26e62650cca85b3f47c1ff52/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/logs/web",
"Destination": "/var/log/nginx",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "1af68e0e1607",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"11110/tcp": {},
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.25.3",
"NJS_VERSION=0.8.2",
"PKG_RELEASE=1~bookworm"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"Image": "192.168.1.7/visionlink/vision-link-edge-web:2.3.9-arm",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "477b306e3809c7236623c84f867bda88578a80b0ce7a0ba449f510f1d792dd8d",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:b2d2ff537b206a821db24d8a62437e8870c84c8ef3ef9edb06784d48d83c5319",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "visionlink",
"com.docker.compose.project.config_files": "/home/wondertek/visionlink/docker-compose.yml",
"com.docker.compose.project.working_dir": "/home/wondertek/visionlink",
"com.docker.compose.replace": "8ab21b3060cd987ff0432746bcc1669d270ec767395af144fed49a5c540f4a45",
"com.docker.compose.service": "edge-web",
"com.docker.compose.version": "2.35.1",
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>",
"org.opencontainers.image.revision": "3fee322018a0f6b0ced6da20fffe6b6b0efa4c34",
"org.opencontainers.image.version": "2.3.9"
},
"StopSignal": "SIGQUIT"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "d071de54549b15fca40a9fdef4447a871cffd67d33616f2743845ae12fc31cf5",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"11110/tcp": null,
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "21180"
},
{
"HostIp": "::",
"HostPort": "21180"
}
]
},
"SandboxKey": "/var/run/docker/netns/d071de54549b",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"visionlink_visionlink-network": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"visionlink-edge-web-1",
"edge-web",
"1af68e0e1607"
],
"NetworkID": "3434bd3a71288b8df73a0cb4ba63d19b68a1b090a79206eeeb16712052947c94",
"EndpointID": "1a85fe6b1c2f25aed12793cd4bec054eb51e1af81f5d8b48fd7d499241936d77",
"Gateway": "172.21.0.1",
"IPAddress": "172.21.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:15:00:05",
"DriverOpts": null
}
}
}
}
]
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker inspect visionlink-edge-mediaserver-1
[
{
"Id": "af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4",
"Created": "2024-06-20T12:41:24.444392534Z",
"Path": "/bin/sh",
"Args": [
"-c",
"./MediaServer",
"/bin/sh",
"-c",
"\"-d -m 30\""
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1695,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-06-20T09:58:51.247814193Z",
"FinishedAt": "2024-06-20T09:58:49.928086561Z"
},
"Image": "sha256:fea0b5d4daddfc5e9559382cd194a527889c753f048ab408d61543f9d994b024",
"ResolvConfPath": "/userdata/docker/containers/af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4/resolv.conf",
"HostnamePath": "/userdata/docker/containers/af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4/hostname",
"HostsPath": "/userdata/docker/containers/af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4/hosts",
"LogPath": "/userdata/docker/containers/af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4/af5426d013bdc583b384a2bd742744ffdca1167499127ac9681d275c3f65bdf4-json.log",
"Name": "/visionlink-edge-mediaserver-1",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/home/wondertek/visionlink/conf/mediaServer/sysctl.conf:/etc/sysctl.d/sysctl.conf:rw",
"/home/wondertek/visionlink/data/mediaServer/www:/data/MediaServer/www:rw",
"/home/wondertek/visionlink/logs/mediaServer:/data/MediaServer/log:rw",
"/home/wondertek/visionlink/logs/mediaServer/ffmpeg_log:/data/MediaServer/ffmpeg_log:rw",
"/home/wondertek/visionlink/conf/mediaServer/config.ini:/data/MediaServer/config.ini:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "host",
"PortBindings": {},
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [],
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": true,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [
"label=disable"
],
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": null,
"ReadonlyPaths": null
},
"GraphDriver": {
"Data": {
"LowerDir": "/userdata/docker/overlay2/d54ab6efb5a26c5bbfdec26fb21a55a4e0da2bacacd6f88fd7b5d65ee3bc9c91-init/diff:/userdata/docker/overlay2/4668f1baa9ca46ea51c048a07eed12b3ea5aa5c91ea67aaa869648c018eed4bc/diff:/userdata/docker/overlay2/0dd0d7076f11e0c0345e612957e5956939d9004d854670db179b22a15f7b1ac0/diff:/userdata/docker/overlay2/f50a5068b66ae4f5801d6a2154e9c9a3de78ad69790b0edef92fb42cb523cbff/diff:/userdata/docker/overlay2/eb12295581326b952f1fbc434348d8ac78c6ff4e57b0d34f53295e5b7010d043/diff:/userdata/docker/overlay2/64092df7cf1dfa0b042f2e0a71459190f25e3d0155ba5882b3fa4332b58b40f4/diff:/userdata/docker/overlay2/9d2fbfefcf37c07b1763fcdf029963021dd3145ae33a2afc49fdeee820d84050/diff:/userdata/docker/overlay2/469b58092177599ea423d96217a0a1117b8d631e36f7e714963487aacb80f68c/diff",
"MergedDir": "/userdata/docker/overlay2/d54ab6efb5a26c5bbfdec26fb21a55a4e0da2bacacd6f88fd7b5d65ee3bc9c91/merged",
"UpperDir": "/userdata/docker/overlay2/d54ab6efb5a26c5bbfdec26fb21a55a4e0da2bacacd6f88fd7b5d65ee3bc9c91/diff",
"WorkDir": "/userdata/docker/overlay2/d54ab6efb5a26c5bbfdec26fb21a55a4e0da2bacacd6f88fd7b5d65ee3bc9c91/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/conf/mediaServer/config.ini",
"Destination": "/data/MediaServer/config.ini",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/logs/mediaServer/ffmpeg_log",
"Destination": "/data/MediaServer/ffmpeg_log",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/logs/mediaServer",
"Destination": "/data/MediaServer/log",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/data/mediaServer/www",
"Destination": "/data/MediaServer/www",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/home/wondertek/visionlink/conf/mediaServer/sysctl.conf",
"Destination": "/etc/sysctl.d/sysctl.conf",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "firefly",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LD_LIBRARY_PATH=/data/MediaServer/wcae-lib:"
],
"Cmd": [
"/bin/sh",
"-c",
"\"-d -m 30\""
],
"Image": "192.168.1.7/visionlink/visionlink-mediaserver:1.3.1",
"Volumes": null,
"WorkingDir": "/data/MediaServer",
"Entrypoint": [
"/bin/sh",
"-c",
"./MediaServer"
],
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "0f700f942fefa01323aa2923be368dcba0459f2e4fa39db1cadc7111251d85be",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:fea0b5d4daddfc5e9559382cd194a527889c753f048ab408d61543f9d994b024",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "visionlink",
"com.docker.compose.project.config_files": "/home/wondertek/visionlink/docker-compose.yml",
"com.docker.compose.project.working_dir": "/home/wondertek/visionlink",
"com.docker.compose.service": "edge-mediaserver",
"com.docker.compose.version": "2.35.1",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "22.04"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "80993a6a51b04c44f9c0ac1b03cf4af4ef112e4ba3d4c96a2fce9f37f07ec904",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/default",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "33fca4629a93635f6bfc09d3e383d3cdc6f73c44ea954c1e5799ad5162a807ab",
"EndpointID": "d7f635725060c5826b128b60db6e0b688199029513016e11ab015a7115f4d608",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker exec -it visionlink-edge-service-1 /bin/sh
#
# ls /
app app.jar bin boot data dev etc home host lib media mnt opt proc root run sbin sdk srv sys tmp usr var
#
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:47 ? 00:00:00 /bin/sh -c java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
root 6 1 6 09:47 ? 00:13:04 java -Xmx1536m -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.config.lo
root 784 0 0 13:06 pts/0 00:00:00 /bin/sh
root 791 784 0 13:06 pts/0 00:00:00 ps -ef
#
# exit
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker exec -it visionlink-edge-web-1 /bin/sh
#
# ls /
app boot docker-entrypoint.d etc lib mnt proc run srv tmp var
bin dev docker-entrypoint.sh home media opt root sbin sys usr web
#
# exit
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ docker exec -it visionlink-edge-mediaserver-1 /bin/sh
#
# ls /
bin boot data dev etc home lib libssl1.1_1.1.1f-1ubuntu2_arm64.deb media mnt opt proc root run sbin srv sys tmp usr var
#
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:47 ? 00:00:00 /bin/sh -c ./MediaServer /bin/sh -c "-d -m 30"
root 7 1 8 09:47 ? 00:16:17 ./MediaServer
root 20 0 0 13:07 pts/0 00:00:00 /bin/sh
root 27 20 0 13:07 pts/0 00:00:00 ps -ef
#
# exit
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ sudo iptables-save # Generated by iptables-save v1.8.4 on Tue Jul 28 13:10:36 2026 *filter :INPUT ACCEPT [233:23211] :FORWARD ACCEPT [8:608] :OUTPUT ACCEPT [258:32041] :DOCKER - [0:0] :DOCKER-ISOLATION-STAGE-1 - [0:0] :DOCKER-ISOLATION-STAGE-2 - [0:0] :DOCKER-USER - [0:0] -A FORWARD -j DOCKER-USER -A FORWARD -j DOCKER-ISOLATION-STAGE-1 -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o docker0 -j DOCKER -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A FORWARD -o br-3434bd3a7128 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o br-3434bd3a7128 -j DOCKER -A FORWARD -i br-3434bd3a7128 ! -o br-3434bd3a7128 -j ACCEPT -A FORWARD -i br-3434bd3a7128 -o br-3434bd3a7128 -j ACCEPT -A FORWARD -s 192.168.200.204/32 -p tcp -m tcp --sport 554 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.204/32 -p tcp -m tcp --dport 554 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.203/32 -p tcp -m tcp --sport 554 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.203/32 -p tcp -m tcp --dport 554 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.202/32 -p tcp -m tcp --sport 554 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.202/32 -p tcp -m tcp --dport 554 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.201/32 -p tcp -m tcp --sport 554 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.201/32 -p tcp -m tcp --dport 554 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.204/32 -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.204/32 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.203/32 -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.203/32 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.202/32 -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.202/32 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.200.201/32 -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.200.201/32 -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -A DOCKER -d 172.21.0.2/32 ! -i br-3434bd3a7128 -o br-3434bd3a7128 -p tcp -m tcp --dport 3306 -j ACCEPT -A DOCKER -d 172.21.0.3/32 ! -i br-3434bd3a7128 -o br-3434bd3a7128 -p tcp -m tcp --dport 6379 -j ACCEPT -A DOCKER -d 172.21.0.4/32 ! -i br-3434bd3a7128 -o br-3434bd3a7128 -p tcp -m tcp --dport 11110 -j ACCEPT -A DOCKER -d 172.21.0.5/32 ! -i br-3434bd3a7128 -o br-3434bd3a7128 -p tcp -m tcp --dport 80 -j ACCEPT -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -i br-3434bd3a7128 ! -o br-3434bd3a7128 -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -j RETURN -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP -A DOCKER-ISOLATION-STAGE-2 -o br-3434bd3a7128 -j DROP -A DOCKER-ISOLATION-STAGE-2 -j RETURN -A DOCKER-USER -j RETURN COMMIT # Completed on Tue Jul 28 13:10:36 2026 # Generated by iptables-save v1.8.4 on Tue Jul 28 13:10:36 2026 *nat :PREROUTING ACCEPT [6:1696] :INPUT ACCEPT [6:1696] :OUTPUT ACCEPT [17:1147] :POSTROUTING ACCEPT [17:1147] :DOCKER - [0:0] -A PREROUTING -i eth1 -p udp -m udp --dport 123 -j DNAT --to-destination 192.168.100.1:123 -A PREROUTING -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.200.201:80 -A PREROUTING -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.200.202:80 -A PREROUTING -p tcp -m tcp --dport 8083 -j DNAT --to-destination 192.168.200.203:80 -A PREROUTING -p tcp -m tcp --dport 8084 -j DNAT --to-destination 192.168.200.204:80 -A PREROUTING -p tcp -m tcp --dport 555 -j DNAT --to-destination 192.168.200.201:554 -A PREROUTING -p tcp -m tcp --dport 556 -j DNAT --to-destination 192.168.200.202:554 -A PREROUTING -p tcp -m tcp --dport 557 -j DNAT --to-destination 192.168.200.203:554 -A PREROUTING -p tcp -m tcp --dport 558 -j DNAT --to-destination 192.168.200.204:554 -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A POSTROUTING -s 172.21.0.0/16 ! -o br-3434bd3a7128 -j MASQUERADE -A POSTROUTING -d 192.168.100.1/32 -o eth0 -p udp -m udp --dport 123 -j MASQUERADE -A POSTROUTING -d 192.168.200.201/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A POSTROUTING -d 192.168.200.202/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A POSTROUTING -d 192.168.200.203/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A POSTROUTING -d 192.168.200.204/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A POSTROUTING -d 192.168.200.201/32 -p tcp -m tcp --dport 554 -j MASQUERADE -A POSTROUTING -d 192.168.200.202/32 -p tcp -m tcp --dport 554 -j MASQUERADE -A POSTROUTING -d 192.168.200.203/32 -p tcp -m tcp --dport 554 -j MASQUERADE -A POSTROUTING -d 192.168.200.204/32 -p tcp -m tcp --dport 554 -j MASQUERADE -A POSTROUTING -s 172.21.0.2/32 -d 172.21.0.2/32 -p tcp -m tcp --dport 3306 -j MASQUERADE -A POSTROUTING -s 172.21.0.3/32 -d 172.21.0.3/32 -p tcp -m tcp --dport 6379 -j MASQUERADE -A POSTROUTING -s 172.21.0.4/32 -d 172.21.0.4/32 -p tcp -m tcp --dport 11110 -j MASQUERADE -A POSTROUTING -s 172.21.0.5/32 -d 172.21.0.5/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A DOCKER -i docker0 -j RETURN -A DOCKER -i br-3434bd3a7128 -j RETURN -A DOCKER ! -i br-3434bd3a7128 -p tcp -m tcp --dport 13306 -j DNAT --to-destination 172.21.0.2:3306 -A DOCKER ! -i br-3434bd3a7128 -p tcp -m tcp --dport 6379 -j DNAT --to-destination 172.21.0.3:6379 -A DOCKER ! -i br-3434bd3a7128 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.21.0.4:11110 -A DOCKER ! -i br-3434bd3a7128 -p tcp -m tcp --dport 21180 -j DNAT --to-destination 172.21.0.5:80 COMMIT # Completed on Tue Jul 28 13:10:36 2026 firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ sudo iptables -t filter -L FORWARD -v -n --line-numbers Chain FORWARD (policy ACCEPT 44 packets, 3344 bytes) num pkts bytes target prot opt in out source destination 1 22317 6891K DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 2 22317 6891K DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 4 0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0 5 0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 6 0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0 7 0 0 ACCEPT all -- * br-3434bd3a7128 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 8 0 0 DOCKER all -- * br-3434bd3a7128 0.0.0.0/0 0.0.0.0/0 9 0 0 ACCEPT all -- br-3434bd3a7128 !br-3434bd3a7128 0.0.0.0/0 0.0.0.0/0 10 0 0 ACCEPT all -- br-3434bd3a7128 br-3434bd3a7128 0.0.0.0/0 0.0.0.0/0 11 3719 2103K ACCEPT tcp -- * * 192.168.200.204 0.0.0.0/0 tcp spt:554 ctstate ESTABLISHED 12 3626 193K ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.204 tcp dpt:554 ctstate NEW,ESTABLISHED 13 3661 2095K ACCEPT tcp -- * * 192.168.200.203 0.0.0.0/0 tcp spt:554 ctstate ESTABLISHED 14 3643 194K ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.203 tcp dpt:554 ctstate NEW,ESTABLISHED 15 0 0 ACCEPT tcp -- * * 192.168.200.202 0.0.0.0/0 tcp spt:554 ctstate ESTABLISHED 16 247 14820 ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.202 tcp dpt:554 ctstate NEW,ESTABLISHED 17 3718 2095K ACCEPT tcp -- * * 192.168.200.201 0.0.0.0/0 tcp spt:554 ctstate ESTABLISHED 18 3659 194K ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.201 tcp dpt:554 ctstate NEW,ESTABLISHED 19 0 0 ACCEPT tcp -- * * 192.168.200.204 0.0.0.0/0 tcp spt:80 ctstate ESTABLISHED 20 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.204 tcp dpt:80 ctstate NEW,ESTABLISHED 21 0 0 ACCEPT tcp -- * * 192.168.200.203 0.0.0.0/0 tcp spt:80 ctstate ESTABLISHED 22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.203 tcp dpt:80 ctstate NEW,ESTABLISHED 23 0 0 ACCEPT tcp -- * * 192.168.200.202 0.0.0.0/0 tcp spt:80 ctstate ESTABLISHED 24 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.202 tcp dpt:80 ctstate NEW,ESTABLISHED 25 0 0 ACCEPT tcp -- * * 192.168.200.201 0.0.0.0/0 tcp spt:80 ctstate ESTABLISHED 26 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.200.201 tcp dpt:80 ctstate NEW,ESTABLISHED firefly@firefly:~$ firefly@firefly:~$ firefly@firefly:~$ sudo iptables -t nat -L -v -n --line-numbers Chain PREROUTING (policy ACCEPT 6 packets, 1696 bytes) num pkts bytes target prot opt in out source destination 1 22 1672 DNAT udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 to:192.168.100.1:123 2 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8081 to:192.168.200.201:80 3 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8082 to:192.168.200.202:80 4 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8083 to:192.168.200.203:80 5 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8084 to:192.168.200.204:80 6 2 453 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:555 to:192.168.200.201:554 7 101 6060 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:556 to:192.168.200.202:554 8 2 453 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:557 to:192.168.200.203:554 9 2 453 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:558 to:192.168.200.204:554 10 6 1696 DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT 6 packets, 1696 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 203 packets, 12460 bytes) num pkts bytes target prot opt in out source destination 1 0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT 203 packets, 12460 bytes) num pkts bytes target prot opt in out source destination 1 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 2 0 0 MASQUERADE all -- * !br-3434bd3a7128 172.21.0.0/16 0.0.0.0/0 3 22 1672 MASQUERADE udp -- * eth0 0.0.0.0/0 192.168.100.1 udp dpt:123 4 0 0 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.201 tcp dpt:80 5 0 0 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.202 tcp dpt:80 6 0 0 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.203 tcp dpt:80 7 0 0 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.204 tcp dpt:80 8 2 453 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.201 tcp dpt:554 9 101 6060 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.202 tcp dpt:554 10 2 453 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.203 tcp dpt:554 11 2 453 MASQUERADE tcp -- * * 0.0.0.0/0 192.168.200.204 tcp dpt:554 12 0 0 MASQUERADE tcp -- * * 172.21.0.2 172.21.0.2 tcp dpt:3306 13 0 0 MASQUERADE tcp -- * * 172.21.0.3 172.21.0.3 tcp dpt:6379 14 0 0 MASQUERADE tcp -- * * 172.21.0.4 172.21.0.4 tcp dpt:11110 15 0 0 MASQUERADE tcp -- * * 172.21.0.5 172.21.0.5 tcp dpt:80 Chain DOCKER (2 references) num pkts bytes target prot opt in out source destination 1 0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0 2 0 0 RETURN all -- br-3434bd3a7128 * 0.0.0.0/0 0.0.0.0/0 3 0 0 DNAT tcp -- !br-3434bd3a7128 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:13306 to:172.21.0.2:3306 4 0 0 DNAT tcp -- !br-3434bd3a7128 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6379 to:172.21.0.3:6379 5 0 0 DNAT tcp -- !br-3434bd3a7128 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.21.0.4:11110 6 0 0 DNAT tcp -- !br-3434bd3a7128 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21180 to:172.21.0.5:80 firefly@firefly:~$ firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo arp -a
? (192.168.200.203) at 40:ac:bf:a5:02:9b [ether] on eth1
? (172.21.0.2) at 02:42:ac:15:00:02 [ether] on br-3434bd3a7128
? (172.21.0.3) at 02:42:ac:15:00:03 [ether] on br-3434bd3a7128
_gateway (192.168.100.1) at d6:de:fb:61:5e:30 [ether] on eth0
? (192.168.200.123) at 98:fa:9b:c8:92:83 [ether] on eth1
? (192.168.200.201) at 40:ac:bf:a5:03:38 [ether] on eth1
? (192.168.200.202) at <incomplete> on eth1
? (192.168.200.204) at 40:ac:bf:b4:a2:14 [ether] on eth1
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-3434bd3a7128
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
firefly@firefly:~$
firefly@firefly:~$
firefly@firefly:~$ sudo ss -alntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 0 0.0.0.0:21180 0.0.0.0:* users:(("docker-proxy",pid=1530,fd=4))
LISTEN 0 0 127.0.0.1:18182 0.0.0.0:* users:(("python3",pid=2063,fd=4))
LISTEN 0 0 0.0.0.0:9000 0.0.0.0:* users:(("python3",pid=762,fd=3))
LISTEN 0 0 0.0.0.0:6379 0.0.0.0:* users:(("docker-proxy",pid=1423,fd=4))
LISTEN 0 0 127.0.0.1:5037 0.0.0.0:* users:(("adbd",pid=694,fd=5))
LISTEN 0 0 0.0.0.0:80 0.0.0.0:* users:(("docker-proxy",pid=1479,fd=4))
LISTEN 0 0 0.0.0.0:5555 0.0.0.0:* users:(("adbd",pid=694,fd=10))
LISTEN 0 0 127.0.0.53:53 0.0.0.0:* users:(("systemd-resolve",pid=613,fd=13))
LISTEN 0 0 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=838,fd=3))
LISTEN 0 0 127.0.0.1:6010 0.0.0.0:* users:(("sshd",pid=2716,fd=11))
LISTEN 0 0 0.0.0.0:13306 0.0.0.0:* users:(("docker-proxy",pid=1363,fd=4))
LISTEN 0 0 *:21180 *:* users:(("docker-proxy",pid=1536,fd=4))
LISTEN 0 0 *:1949 *:* users:(("MediaServer",pid=1807,fd=29))
LISTEN 0 0 *:5060 *:* users:(("java",pid=1806,fd=202))
LISTEN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=48))
LISTEN 0 0 *:3556 *:* users:(("MediaServer",pid=1807,fd=28))
LISTEN 0 0 *:18181 *:* users:(("java",pid=1806,fd=204))
LISTEN 0 0 *:50054 *:* users:(("lifejacket_dete",pid=770,fd=27))
LISTEN 0 0 *:50054 *:* users:(("lifejacket_dete",pid=770,fd=28))
LISTEN 0 0 *:50058 *:* users:(("person_detect_s",pid=715,fd=21))
LISTEN 0 0 *:50058 *:* users:(("person_detect_s",pid=715,fd=22))
LISTEN 0 0 *:6379 *:* users:(("docker-proxy",pid=1429,fd=4))
LISTEN 0 0 *:50062 *:* users:(("face_recognitio",pid=766,fd=28))
LISTEN 0 0 *:50062 *:* users:(("face_recognitio",pid=766,fd=29))
LISTEN 0 0 *:80 *:* users:(("docker-proxy",pid=1495,fd=4))
LISTEN 0 0 *:11380 *:* users:(("MediaServer",pid=1807,fd=30))
LISTEN 0 0 *:11381 *:* users:(("MediaServer",pid=1807,fd=31))
LISTEN 0 0 *:22 *:* users:(("sshd",pid=838,fd=4))
LISTEN 0 0 [::1]:6010 *:* users:(("sshd",pid=2716,fd=10))
LISTEN 0 0 *:13306 *:* users:(("docker-proxy",pid=1385,fd=4))
firefly@firefly:~$
firefly@firefly:~$ sudo ss -alnup
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 0.0.0.0:42379 0.0.0.0:* users:(("person_detect_s",pid=715,fd=13))
UNCONN 0 0 0.0.0.0:54684 0.0.0.0:* users:(("lifejacket_dete",pid=770,fd=13))
UNCONN 0 0 0.0.0.0:59577 0.0.0.0:* users:(("face_recognitio",pid=766,fd=13))
UNCONN 0 0 127.0.0.53:53 0.0.0.0:* users:(("systemd-resolve",pid=613,fd=12))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=34))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=35))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=36))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=37))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=38))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=39))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=40))
UNCONN 0 0 *:10100 *:* users:(("MediaServer",pid=1807,fd=41))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=32))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=42))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=33))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=43))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=44))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=45))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=46))
UNCONN 0 0 *:8100 *:* users:(("MediaServer",pid=1807,fd=47))
UNCONN 0 0 *:17000 *:* users:(("java",pid=1806,fd=213))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=49))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=50))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=51))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=52))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=53))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=54))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=55))
UNCONN 0 0 *:9000 *:* users:(("MediaServer",pid=1807,fd=56))
UNCONN 0 0 *:5060 *:* users:(("java",pid=1806,fd=203))
firefly@firefly:~$
firefly@firefly:~$
┌─────────────────────────────────────────────────────────────────┐
│ 外部访问入口 │
├─────────────────────────────────────────────────────────────────┤
│ 浏览器访问: http://开发板IP:21180 → VisionLink Web 界面 │
│ HTTP 访问: http://开发板IP:80 → Nginx 反向代理 │
│ RTSP 视频流: tcp://开发板IP:555-558 → 摄像头 RTSP 流 │
│ SSH 远程管理: ssh firefly@开发板IP:22 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Firefly 开发板 (宿主机) │
├─────────────────────────────────────────────────────────────────┤
│ docker-proxy (端口映射) │
│ ├─ 21180 → 容器 visionlink-edge-web:80 │
│ ├─ 6379 → 容器 visionlink-redis:6379 │
│ ├─ 80 → 容器 visionlink-nginx:11110 │
│ └─ 13306 → 容器 visionlink-mysql:3306 │
│ │
│ 宿主机本地服务 │
│ ├─ SSH (22) │
│ ├─ ADB (5037, 5555) │
│ └─ Python 辅助服务 (9000, 12022) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Docker 容器网络 (172.18.0.0/16) │
├─────────────────────────────────────────────────────────────────┤
│ visionlink-edge-web (172.18.0.2:80) → Web 界面 │
│ visionlink-redis (172.18.0.3:6379) → 缓存 │
│ visionlink-nginx (172.18.0.4:11110) → 反向代理 │
│ visionlink-mysql (172.18.0.5:3306) → 数据库 │
│ visionlink-edge-service (Java, 端口 5060/17000/18181) │
│ visionlink-mediaserver (MediaServer, 多端口) │
│ visionlink-record-worker (录像服务) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 外部设备 (192.168.200.0/24) │
├─────────────────────────────────────────────────────────────────┤
│ 摄像头 1 (200.201) │ 摄像头 2 (200.202) │
│ 摄像头 3 (200.203) │ 摄像头 4 (200.204) │
│ 功能: RTSP 视频流 + HTTP Web 管理 │
└─────────────────────────────────────────────────────────────────┘
root@OpenWrt:~#
root@OpenWrt:~# cat /etc/config/system
config system
option hostname 'OpenWrt'
option ttylogin '0'
option log_size '64'
option urandom_seed '0'
option log_proto 'udp'
option conloglevel '8'
option cronloglevel '5'
option zram_comp_algo 'lzo'
option zonename 'Asia/Shanghai'
option timezone 'CST-8'
config timeserver 'ntp'
option interface 'lan'
option enable_server '1'
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# ps | grep ntp
6898 root 3956 S {ntpd} /sbin/ujail -t 5 -n ntpd -U ntp -G ntp -C /etc/capabilities/ntpd.json -c -u -r /bin/ubus -r /usr/bin/env -r /usr/bin/jshn -r /usr/sbin/ntpd-hotplug -r /usr/share/libubox/jshn.sh -- /usr/sbin/ntpd -n -N
6930 ntp 3744 S /usr/sbin/ntpd -n -N -l -I br-lan -S /usr/sbin/ntpd-hotplug
9179 root 3744 S ntpd -n -d -p 10.0.0.211 -p 203.107.6.88 -p 120.25.115.20 -p 158.69.48.97
10181 root 3744 R grep ntp
root@OpenWrt:~#
root@OpenWrt:~# netstat -alnup | grep ntp
udp 0 0 :::123 :::* 6930/ntpd
root@OpenWrt:~#



============= End

浙公网安备 33010602011771号