mirror of
https://github.com/laanwj/k210-sdk-stuff.git
synced 2024-11-25 10:56:20 +04:00
2819afaae5
The standard tunnel mtu of 1500 will cause packets to be dropped, causing transferring larger files to fail.
72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
esptun
|
|
======
|
|
|
|
A tool to tunnel IP packets over UDP over WIFI through an UART connected to a ESP8285 with the
|
|
standard AT firmware.
|
|
|
|
Usage
|
|
-----
|
|
|
|
esptun <ifname> <uart> <ssid> <passwd> <host> <port>
|
|
|
|
This will create tun interface `ifname`. Then, with the with the ESP WIFI
|
|
device on `uart` it connects to the AP `ssid` with password `passwd`.
|
|
It creates a UDP over IP tunnel with the other endpoint `host:port`.
|
|
|
|
The new tun device will not be configured, use the `ip` utility to assign an
|
|
IP address and switch the interface on.
|
|
|
|
For example:
|
|
|
|
/root/esptun tun0 /dev/ttyS1 "accesspointname" "secretpassword" 192.168.122.21 23232
|
|
/sbin/ip link set dev tun0 mtu 1472
|
|
/sbin/ip addr add 10.0.1.2/24 dev tun0
|
|
/sbin/ip link set tun0 up
|
|
/sbin/ip route add default via 10.0.1.1 dev tun0
|
|
|
|
(setting the MTU to `1500-20-8` the typical network MTU minus IP and UDP header overhead, because
|
|
otherwise the ESP's network stack will drop the oversized packets)
|
|
|
|
Host side
|
|
---------
|
|
|
|
On the other endpoint the tunnel is expected to be a host running `socat` or similar to unwrap
|
|
the tunnel. For example:
|
|
|
|
sudo socat UDP:192.168.2.127:23232,bind=192.168.122.21:23232 \
|
|
TUN:10.0.1.1/24,tun-name=tundudp,iff-no-pi,tun-type=tun,su=$USER,iff-up &
|
|
sudo ip link set dev tundudp mtu 1472
|
|
|
|
Optionally, enable forwarding and masquerading:
|
|
|
|
sudo iptables -t nat -F
|
|
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
|
|
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
|
|
|
|
Linux kernel
|
|
------------
|
|
|
|
Until there is a proper solution, you can use the following kernel branch
|
|
to get the UART working on Kendryte K210 under Linux:
|
|
|
|
https://github.com/laanwj/linux/tree/kendryte-5.6-rc1-wifi
|
|
|
|
This is a hack that configures the FPIOA and GPIOHS manually, and configures UART1
|
|
from the device tree.
|
|
|
|
To enable TUN/TAP, enable the following kernel settings:
|
|
```
|
|
CONFIG_NET=y
|
|
CONFIG_INET=y
|
|
CONFIG_TUN=y
|
|
```
|
|
|
|
While building the root filesystem, make sure you enable at least `ip` and `ping`
|
|
(and possibly other network tools) for busybox.
|
|
|
|
Author
|
|
------
|
|
|
|
Copyright (c) 2020 W.J. van der Laan
|
|
Distributed under the MIT software license,
|