Opened 8 years ago

Closed 8 years ago

Last modified 6 years ago

#4197 closed Enhancement (invalid)

add an option to disable IPv6 support in transmission

Reported by: mr-4 Owned by:
Priority: Normal Milestone: None Set
Component: Transmission Version: 2.22
Severity: Normal Keywords:
Cc: timwhite88@…

Description

Currently, there is no way to prevent transmission from (attempting to) loading IPv6-related kernel modules (net-pf-10 is one example of these).

This can cause a lot of issues if the host environment has IPv6 administratively disabled (through the kernel command line during boot or via sysctl), particularly so if SELinux is in operation.

For starters, my logs will be filled with alerts issued every single second during the execution of transmission and that could also have a negative performance impact on transmission as well.

One solution for disabling IPv6 support could be to use "bind-address-ipv6" - if it is an empty string (i.e. "") then IPv6 could be completely disabled, otherwise use IPv6 and bind to the specified address (same could be implemented for IPv4 as well).

Change History (15)

comment:1 follow-up: Changed 8 years ago by jordan

  • Milestone changed from 2.30 to None Set
  • Resolution set to invalid
  • Status changed from new to closed

I don't see this as being a commonplace issue. What is the use case for cutting away the IPv6 subset of peers that you could connect to?

Also, please don't set milestones unless someone on the development team has asked you to. We're currently in feature freeze for 2.30 and it's unlikely that any new features will be accepted for 2.30 at this point.

comment:2 in reply to: ↑ 1 Changed 8 years ago by mr-4

Replying to jordan:

I don't see this as being a commonplace issue. What is the use case for cutting away the IPv6 subset of peers that you could connect to?

I thought I was pretty clear on this, but obviously not - when IPv6 is (administratively) prohibited/disabled on the host system in which Transmission runs, it is logical to assume that it won't try to load the IPv6-related kernel modules once every second, causing my audit - and other - logs to fill up as well as introducing an unnecessary load on my system too.

As for *why* IPv6 may be (administratively) disabled/deactivated on the host system - there 1001 different reasons, though I'd mention just one - the security/network/ethernet service(s)/system on that machine may not be able to cope with IPv6 for whatever reason and therefore the administrator(s) have decided not to deploy it and stick with IPv4 as it is much more manageable (wonder why Micro$oft is paying billions to acquire a host of IPv4 addresses recently?).

As I stated in my initial paragraphs of the fist post this is a feature request - one I'd be glad to see implemented in Transmission as I think it would have a great benefit as well as flexibility to vast number of users like myself.

As to why I set up the milestone value when I submitted this feature request - I haven't seen any help text or an explanation with regards to this field which urges me *not* to set it up. As you now explained it to me I'd keep it in mind for future reference.

comment:3 Changed 8 years ago by User294

I do not see how T can cause modules loading on it's own: AFAIK there is no code which is loading modules in explicit ways. Looks like OS/configuration issue?

As for "great benefit" and "vast number of users", it looks like blatant exaggeration.

However, I can see some points in disabling one protocol or another. Say, I can have a non-native (tunneled) IPv6 connectivity if ISP does not offers native IPv6 yet. It can be much slower than native IPv4 over local ISP so it can be bad idea to run bulk torrent data via such tunnel. However I think quite few users will have this problem - at very most it's something like a very minor feature for wishlist.

comment:4 Changed 8 years ago by lildadou

Personally I bind interface [:: 1] to disable IPv6.

But since version 2.22 "transmission" can no longer connect to the tracker with this trick. The developers as they have sought to "force "the hands of users?

comment:5 Changed 8 years ago by purewhite

  • Cc timwhite88@… added
  • Resolution invalid deleted
  • Status changed from closed to reopened

While the original poster may have wanted this for a non-transmission issue, there is a need for this. My IPv6 connection comes through a slow tunnel, with donated bandwidth. I would like to be able to disable ipv6 for transmission so that all torrent traffic goes through the faster (and cheaper) ipv4 connection. Ideally it should be as simple as setting the ipv6 bind address to something like ::1 however this doesn't appear to work properly as I still see connection attempts on IPv6.

If the developers really have a great reason for NOT allowing us to disable IPv6, I'd like to hear it. I believe as more and more users get IPv6 tunnels the need for this may become more apparent. As more users get native IPv6, the need will decrease. However in Australia it will be some time before Native IPv6 is practical for users.

comment:6 follow-up: Changed 8 years ago by jordan

  • Resolution set to invalid
  • Status changed from reopened to closed

If the developers really have a great reason for NOT allowing us to disable IPv6, I'd like to hear it.

That's not how the process of adding features works. By that yardstick, Transmission would be a bloated nightmare with every feature ever requested by anyone.

comment:7 in reply to: ↑ 6 Changed 8 years ago by purewhite

  • Severity changed from Normal to Blocker
  • Type changed from Enhancement to Bug

Replying to jordan:

If the developers really have a great reason for NOT allowing us to disable IPv6, I'd like to hear it.

That's not how the process of adding features works. By that yardstick, Transmission would be a bloated nightmare with every feature ever requested by anyone.

I'm sorry but I don't see how network settings can be seen as bloat. Just about every piece of network software that supports both ipv6 and ipv4 allow you to selectively disable one or the other. There are plenty of good reasons for allowing this and forcing users to use IPv6 is not the right thing to do. Comment 4 suggests that this feature request is actually a bug report as earlier versions did allow you to prevent IPv6 access while current versions don't. That's called a regression.

Maybe feature request is the wrong place for this and we'll just have to open a bug, or find software that properly supports ipv6 and ipv4.

comment:8 Changed 8 years ago by purewhite

It turns out it wouldn't be bloat to allow us to disable IPv6, just tell us the one little change we need to make. After a read through the source code, it becomes apparent that to disable ipv6 you need to use a linklocal ipv6 adddress as the bind address.

The line in settings.json should read like. "bind-address-ipv6": "fe80::"

comment:9 follow-ups: Changed 8 years ago by livings124

  • Severity changed from Blocker to Normal
  • Type changed from Bug to Enhancement

Blocker? Bug? Are you kidding me?

I can't think of a single app that allows you to disable IPv6. That's an OS-level setting, not a per-app setting.

comment:10 in reply to: ↑ 9 Changed 8 years ago by purewhite

Replying to livings124:

Blocker? Bug? Are you kidding me?

I can't think of a single app that allows you to disable IPv6. That's an OS-level setting, not a per-app setting.

To name a few. Firefox. Apache. Postfix. Most apps have some method of disabling IPv6 for various reasons.

Blocker, because with IPv6 enabled, I can't use transmission due to a number of peers being IPv6 capable using up the expensive ipv6 tunnel bandwidth. (And I'm not disabling the tunnel just to torrent).

Bug, because forcing a user to use a protocol that isn't essential isn't right. What if IPv6 is broken but the user can't disable it on the machine, and so lots of peers keep trying to access over a broken IPv6 stack?

Regardless, if you read my second comment, it turns out that Transmission already has the feature, just undocumented. It would be great if someone can mark this as fixed and highlight what the user needs to do instead of telling the users it's a 'feature' we don't need. We are the users, we know what we need. Apparently we need to find a torrent client with developers who take us seriously.

comment:11 in reply to: ↑ 9 Changed 8 years ago by mr-4

Replying to livings124:

I can't think of a single app that allows you to disable IPv6. That's an OS-level setting, not a per-app setting.

If you have bothered reading my initial post (the one at the very top which started all this debate) you would have been aware that I already have IPV6 disabled on the entire system!

The problem is that transmission tries to forcefully load IPV6 module (which does not exist!) and thus causing all sorts of alerts on my system and is filling up my logs, hence IPV6 support needs to be disabled (in transmission!) so that it does not attempt silly things like (trying to) load IPv6 modules which do not exist.

I thought I have made this clear - obviously not.

comment:12 Changed 7 years ago by lkraav

i was also looking for a way to get transmission-daemon not to bind to ipv6 interfaces. while i am planning to implement ipv6 at one point, right now i only have ipv6 features in kernel, but have disabled it in apps and services. i have net.ipv6.conf.all.disable_ipv6 = 1 in sysctl.

there's a cron job scanning for listening services. while i could start excluding specific services from grepping scan results, i'd rather have this at service level.

"bind-address-ipv6": "fe80::"

seems to have worked as needed. if it's the correct solution to achieve the goal, should this perhaps be documented in the wiki?

comment:13 Changed 6 years ago by migle

I would like to add, as politely as I can, another use case for this enhancement.

Me too, I use IPv6 through a tunnel, which I would prefer not to burden with P2P traffic. But additionally, I have a static attribution of a global IPv6 prefix.

That means that while my global IPv4 address is dynamic, changes sometimes, and only my ISP knows that it is attributed to me at one given time, my IPv6 addresses have no privacy whatsoever.

While I want that static attribution of an IPv6 prefix for many other things, like DNS and email, which I run on the same machine where I run transmission, I find it a bit too much that any torrent user that sees my IPv6 address can also find out my name and home phone (which is available from RIPE, as is the case for any static IP attribution).

Static IPv6 addresses are a lot less private than dynamic addresses.

Best regards,

comment:14 Changed 6 years ago by maxadamo

100% of Unix/Linux? daemon can be tuned to disable ipv6 protocol. No sorry, not 100%: 100% - Transmission = 99.99999999% Really. I am not kidding. Furthermore, the majority of home routers around the worl are not using ipv6.... and the move to ipv6 it's likely to never happen. By the way, since transmission has an option to run as a daemon I would expect to behave like any other daemons. Another thisn I need to mention is that disabling ipv6 in Linux is almost easy, whereas it's not easy on windows (unclicking the GUI doesn't work: I know it from a Weblogic installation and nobody goes to windows registry). Therefore, if your router does not have ipv6 enabled, your Transmission client will waste its time attempting to use ipv6.

comment:15 Changed 6 years ago by lildadou

I propose to change the resolution of the ticket to WONTFIX. Maybe in the future a developer may wish to support this functionality.

Note: See TracTickets for help on using tickets.