How to only Leech but share within local subnet.

Hi there,

I have a 6 Syncthing client based setup till now and growing. One of the servers is in Send Only mode while the rest of the servers are in Receive Only mode.

I add a new client to “send Only”-server by adding them through the rest API in the config of server A. All the other clients are automatically picking up this new client as A is configured as an introducer. All good and everything seems to work fine.

But now, I need to add 2 clients who are behind a very low bandwidth line. The 2 clients are in the same location on the same subnet. But I want them to only receive data and they are allowed to share it with each other but not with the rest of the cluster. As I don’t want to waste bandwidth sharing blocks with the rest of the cluster.

So I get a little stuck when looking at the options.

So I guess “allowed_networks” will not work because I still want these low bandwidth machines to download from all other machines in the cluster. I just don’t want the rest of the cluster to download from these low bandwidth machines.

So I started to use the “upload bandwidth limitation”. And I’ve set to 3 in the options of the low-bandwidth machines. While I’ve set the download to 1024 KiB/s to not fully utilize the line.

This will not really stop the sharing (still 1 KiB/s is allowed) while they are still able to download with a limit of 1024 KiB/s. However, will these limits also be enabled when they are sharing on their local subnet? So within the low-bandwidth core?

according to “https://github.com/syncthing/syncthing/issues/1336” they are not limited. But I’m here to double-check as it was also stated that it didn’t work by someone.

So for completeness and actually my question.

Is there a better way / best practice to let 2 machines within the same subnet share data with unlimited bandwidth to each other and not to share their data with the rest of the cluster but still the machines are allowed to “leech” from the rest of the cluster?

Are local subnets limited by the bandwidth limits?

You are probably better of connecting only one of the machines to the rest of the cluster, so that there is a clear single path where you can control the rate limits.

I think we support limits per device, which I guess you could use as a workaround here, but having low limits will probably stall/slow down syncing, because it will have to wait for the request to time out to move to the next device etc.

Effectively, there is no good way of doing this.

Bandwidth limits by default exclude local networks, but you can change that.

Couldn’t you just connect the two low-bandwidth devices only with each other and the send-only node, not the others? Then there’s no limit required at all. And given their low-bandwidth, I wouldn’t expect sync slowdown due to only receiving data from a single device vs multiple ones.

That would work but my send only node is set as introducer on all my other nodes. Because I don’t want to administer all nodes when a new node gets added. Is it possible to setup a folder twice with different id’s? Both in send only mode?

This way the low bandwidth machines don’t get introduced to the normal bandwidth ones.

Should work. A bit ugly but still.

Just make sure not to try to use different ignore patterns per folder, as the .stignore file will be “shared” between both of them.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.