WIFIonICE not working on Linux

ICE train having a free wifi logo on it

If you are reading this post and are currently suffering from Deutsche Bahn WIFIonICE not working on your Linux laptop ask yourself “Is docker running on my laptop?”. If not or you don’t know what docker is, I am sorry that this blog post will not help you.

So you have docker running on your machine.

The problem with WIFIonICE on Linux and docker is, that they use the same subnets for giving you IPs.

A subnetwork or subnet is a logical subdivision of an IP network The practice of dividing a network into two or more networks is called subnetting.

Wikipedia

Solutions

As you can not change the router of the train you need to fix/circumvent the issue on your laptop.:

Temporary: Disable docker

If you do not have work with docker during your train ride, the simplest option is to disable docker and the problem will be gone. 
Nicolas Kuttler build a neat little script to do that for your. Get it on his website: kuttler.eu/code/ice-wlan-linux-docker/
Just execute the script with sh [your saved scripname].sh on to stop docker (weird that he uses the keyword on for actually shutting docker off :D)
After you trainride you can reenable docker with sh [your saved scripname].sh off

Permanently: Change docker0 subnet

Searching trough the net I found several solutions on how to do that, involving iptables and stuff. 

But these solutions are all not permanent and take quite some steps. Easiest solution I found. Add a startup parameter to /etc/docker/daemon.json:

{
  "bip": "172.17.77.1/24"
}

Which will tell the docker daemon on startup to use that certain subnet.
Just restart your machine and the WIFIonICE should be working from now on.