diff --git a/Projects/Odin/Odin's Dilemma Cameras.md b/Projects/Odin/Odin's Dilemma Cameras.md new file mode 100644 index 0000000..c010e5b --- /dev/null +++ b/Projects/Odin/Odin's Dilemma Cameras.md @@ -0,0 +1,54 @@ +## Camera Details + +| Camera Name | MAC | UID | IPv4 | `eg-1` HTTPS | `eg-1` RTSP | +| ------------ | ------------------- | ------------------ | ------------- | ---------------------------------------- | ----------------- | +| `odin-cam-1` | `ec:71:db:84:3d:0a` | `9527000J1U475RJC` | `10.10.0.74` | [https://eg-1:14000](https://eg-1:14000) | rtsp://eg-1:14001 | +| `odin-cam-2` | `ec:71:db:22:70:3f` | `9527000IDZDE8B4C` | `10.10.0.186` | [https://eg-1:14002](https://eg-1:14002) | rtsp://eg-1:14003 | +| `odin-cam-3` | `ec:71:db:d3:c3:b9` | `9527000IDZ9FOJWG` | `10.10.0.160` | [https://eg-1:14004](https://eg-1:14004) | rtsp://eg-1:14005 | +| `odin-cam-4` | `ec:71:db:26:1f:c1` | `9527000J1TZJIG1U` | `10.10.0.67` | [https://eg-1:14006](https://eg-1:14006) | rtsp://eg-1:14007 | +User: `admin` +Pwd: `odin1234` +## References + + +- [# How to Live View Reolink Cameras via VLC Media Player](https://support.reolink.com/hc/en-us/articles/360007010473-How-to-Live-View-Reolink-Cameras-via-VLC-Media-Player/) +- [`media_kit`](https://github.com/media-kit/media-kit) for Flutter +- [Reolink Camera Setup](https://support.reolink.com/hc/en-us/articles/900000621783-How-to-Configure-Reolink-Ports-Settings/) + +## NFTables Config + +```conf +table ip global { + chain prerouting { + type nat hook prerouting priority dstnat; policy accept; + iifname "eno1" tcp dport 14000 dnat to 10.10.0.74:443 + iifname "eno1" tcp dport 14001 dnat to 10.10.0.74:554 + iifname "eno1" tcp dport 14002 dnat to 10.10.0.186:443 + iifname "eno1" tcp dport 14003 dnat to 10.10.0.186:554 + iifname "eno1" tcp dport 14004 dnat to 10.10.0.160:443 + iifname "eno1" tcp dport 14005 dnat to 10.10.0.160:554 + iifname "eno1" tcp dport 14006 dnat to 10.10.0.67:443 + iifname "eno1" tcp dport 14007 dnat to 10.10.0.67:554 + } + + chain inbound { + type filter hook input priority filter; policy accept; + } + + chain forward { + type filter hook forward priority filter; policy drop; + ct state vmap { invalid : drop, established : accept, related : accept } + iifname "eno2" oifname "eno1" accept + ip daddr 10.10.0.74 tcp dport { 443, 554 } accept + ip daddr 10.10.0.186 tcp dport { 443, 554 } accept + ip daddr 10.10.0.160 tcp dport { 443, 554 } accept + ip daddr 10.10.0.67 tcp dport { 443, 554 } accept + } + + chain postrouting { + type nat hook postrouting priority srcnat; policy accept; + ip saddr 10.10.0.0/24 oifname "eno1" masquerade + } +} +``` +