wiki/en/package-vtun.md

144 lines
3.4 KiB
Markdown

# OpenIPC Wiki
[Table of Content](../README.md)
Package Vtun
------------
### Introduction
This package is designed to organize a Vtun-based L2 tunnel between IP cameras and a server.
In order to reduce the space occupied on the NOR flash, reduce RAM consumption, and increase the tunnel throughput, encryption and compression are completely disabled.
### Client part
The client part is always present in all official OpenIPC firmware.
To connect to the server, go to the extensions tab, specify the IP address or domain of the server and save the settings
### Server part
- create a bridge interface, for example br-openipc
- in the vtund.conf config add all camera connections to the bridge
- raise any DHCP server on the br-openipc interface
- bind the IP addresses of the connecting devices by MAC
### Example of vtun compilation for server
Installing components and dependencies for Debian/Ubuntu
```
apt install -y bison bridge-utils build-essential curl flex
```
### Automatic compilation script
```
#!/bin/bash
#
# OpenIPC.org | v.20240824
#
LANG=C
vtun_version="3.0.2"
vtun_download="http://prdownloads.sourceforge.net/vtun/vtun-${vtun_version}.tar.gz"
prepare() {
curl -L -o vtun-${vtun_version}.tar.gz ${vtun_download}
tar xvfz vtun-${vtun_version}.tar.gz
rm vtun-${vtun_version}.tar.gz
cd vtun-${vtun_version}
}
compile() {
./configure --build=x86_64-linux-gnu --disable-lzo --disable-zlib --disable-ssl --prefix=''
make && strip vtund
}
install() {
mkdir -p ../_binary
mv -v vtund ../_binary/vtund_i386
cd -
rm -rf vtun-${vtun_version}
}
prepare && compile && install
```
### Example of /etc/network/interfaces.d/br-openipc for server
```
# Bridge OpenIPC
#
auto br-openipc
iface br-openipc inet static
address 192.168.11.1
netmask 255.255.255.0
bridge_ports zero
up mkdir -p /var/lock/vtund /var/log/vtund
up iptables -A FORWARD -j ACCEPT -i br-openipc -o br-openipc
#up iptables -A FORWARD -t mangle -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#up iptables -A POSTROUTING -t mangle -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#up iptables -A POSTROUTING -t nat -s 192.168.11.0/24 -j MASQUERADE
#up iptables -A FORWARD -j ACCEPT -i ens2 -o br-openipc -d 192.168.11.0/24
#up iptables -A FORWARD -j ACCEPT -o ens2 -i br-openipc -s 192.168.11.0/24
#up iptables -A PREROUTING -t nat -j DNAT -p TCP -i ens2 --dport 10180 --to-destination 192.168.11.101:80
#up iptables -A POSTROUTING -t nat -j SNAT -p TCP -o br-openipc -d 192.168.11.101 --to-source 192.168.11.1
```
### Example of /etc/vtund.conf for server
```
options {
syslog daemon;
timeout 60;
ip /bin/ip;
}
default {
type tun;
proto tcp;
persist yes;
keepalive yes;
timeout 60;
compress no;
encrypt no;
speed 512:512;
multi killold;
}
#
### Cam-1
#
E60BFB000001 {
type ether;
speed 0:0;
password bla-bla-pass;
device v-E60BFB000001;
up {
ip "link set %% up multicast off mtu 1500";
program "brctl addif br-openipc %%";
};
down {
program "brctl delif br-openipc %%";
ip "link set %% down";
};
}
#
### Cam-2
#
729051000001 {
type ether;
speed 0:0;
password bla-bla-pass;
device v-729051000001;
up {
ip "link set %% up multicast off mtu 1500";
program "brctl addif br-openipc %%";
};
down {
program "brctl delif br-openipc %%";
ip "link set %% down";
};
}
#
```