I’m trying to run an official Tailscale container. The Tailscale software works correct, but in order to enable proper forwarding it tries to create a firewall rule inside the container and fails.
Command:
iptables -t filter -A ts-forward -i tailscale0 -j MARK --set-mark 0x40000/0xff0000 --wait
Error:
exit status 1: iptables: Invalid argument. Run `dmesg’ for more information
Output of iptables -S when the container is running:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N ts-forward
-N ts-input
-A INPUT -j ts-input
-A FORWARD -j ts-forward
-A ts-input -s 100.115.92.0/23 ! -i tailscale0 -j RETURN
-A ts-input -s 100.64.0.0/10 ! -i tailscale0 -j DROP
-A ts-input -i tailscale0 -j ACCEPT
Unfortunately, dmesg can’t be run inside the container (forbidden?). Although xt_mark is listed as a loaded kernel module by lsmod command, the system seems to lack packet marking capability.
TS_USERSPACE = false, to enable tailscale0 device creation (otherwise it runs as a userspace proxy, not what I need).
I reported the problem to MikroTik support (SUP-138792) and received the following answer:
Currently, there are no available iptables for third-party code. We will explore possible solutions if we receive similar requests from our clients. We are sorry for the inconvenience caused.
For all those users who are interested in Tailscale and other containers using iptables, please, submit your requests via the support portal.
As mentioned above, I approached the support and received a confirmation of this issue. You may also submit a new ticket and tell them you are interested in allowing iptables inside containers as well.
Actually, iptables / nftables rules are partially allowed in containers. E.g. you can use basic filter and nat rules. However, MikroTik never disclosed what is allowed and what is forbidden, they seem to be unwilling to do it.
The problem with Tailscale is that it requires packet marking to work properly, i.e. -j MARK of iptables / nftables, and RouterOS kernel seems to limit this functionality in containers for some reason, or it may even lack standard marking module from Linux and use its own custom module for similar purposes.
router:/# conntrack -L
ctnetlink kernel ABI is broken, contact your vendor.
parse_mnl.c:535 reason: Result not representable
router:/# conntrack -E
ctnetlink kernel ABI is broken, contact your vendor.
parse_mnl.c:535 reason: Result not representable
I’m also trying to use tailscale, it works ok as a subnet router for tailnet→lan, and from the RouterOS device itself → tailnet, but connections from other LAN clients using ROS gateway are broken, and ts subnet router logs like:
Can any one give me so advice on setting up tailscale on a arm 64 router with Router OS 7.20 i want to use it as a subnet router in my WISP to have remote access of all my router i have a a lot of divrent sites that is not on the same location and want to link them together