CMS shows same private IP for different displays

I install CMS 1.81 in Windows 10 Pro x64 with Docker.
The IP of CMS machine is 192.168.16.15, and the players are 192.168.16.12 and 192.168.16.137.
When I tried to make VNC link, I found CMS shows both these players as 172.18.0.1

How can I fix it?

Most likely that is the ā€œIP addressā€ that your web server sees (the Docker interface?). Youā€™re probably using some form of proxy, in that case your proxy needs to pass the IP information.

From what Iā€™ve seen, the CMS does not use the IP of the player behind a firewall/proxy but uses the IP the CMS ā€˜seesā€™ which is often a public IP or a proxy IP.

On Windows, Docker uses a userland proxy service to proxy TCP packets in to the CMS from Windows.

Unfortunately, that means that as youā€™ve seen, the source IP address is always the internal Docker bridge. As it stands, I donā€™t think thereā€™s anything we can do to change that. Thereā€™s an issue open in the Docker bug tracker for it, so hopefully in time they will resolve this. It doesnā€™t affect Docker on Linux as far as Iā€™m aware.

@Guru_Evi If they were running behind a reverse proxy, the source IP should still be shown since Xibo looks for the X-Forwarded-For headers which most reverse proxies add to the HTTP request. As the Docker userland proxy is a TCP proxy and not one that understands the protocol passing through it, it canā€™t add those headers.

Thank you, Alex, but itā€™s really hard to perfectly install xibo 1.8.x.
Firstly, I tried to use custom installtion with XAMPP, but no matter how, I canā€™t get lib_zmq work.
Then I tried Windows Home + docker + toolbox, VirtualBox + Lubuntu + docker for daysā€¦ still no luck.

Fianally I can install it on Windows 10 Pro + Docker, but the bad news about IPā€¦ Ahhhhhā€¦

A Linux-based install shouldnā€™t have this issue. Thereā€™s a step by step guide in the Guides section. Itā€™s about 10 minutes work start to finish, once you have the OS installed.

Iā€™ve some trouble when I tried to do ā€œdocker-compose up -dā€ on Ubuntu.
docker-compose responded that I need to change the docker version to ā€œ2ā€ or ā€œ2.0ā€ in ā€œ.ymlā€ file.
After I done this, there were new error messages. I tried this and that and finally it works, but I donā€™t know what made it work. I only know one thing I did is to re-install docker-compose.

But on CentOS, everything goes smoothly.

If docker-compose complains about the version number, youā€™re likely using a packaged version of Docker and Docker Compose rather than installing the latest versions as shown in the guide.

@alex After migrating from Docker on Windows to Docker on Ubuntu as a Hyper-V VM, we are still getting IP addresses resolving to an internal IP address that looked like it was attached to a container. Iā€™ll provide more information tomorrow, but it appears this issue may be more widespread.

Is the HyperV VM connected to the network in bridged mode, or in NAT mode? If itā€™s in NAT mode, then the VM (and therefore the containers) will see all connections coming from a fixed IP rather than from the actual origin.

@alex The Hyper-V VM is connected to the network via a virtual switch. The Connection type for the virtual switch is External Network attached to an IntelĀ® Ethernet Connection (2) I219-LM, which allows the management operating system to share the network adapter.

Here is some output from ifconfig from the Ubuntu VM:

  • eth0 has ipv4 address 10.250.103.237, which is the external network.
  • br-175b5db1f2e6 has ipv4 address 172.18.0.1
  • docker0 has ipv4 address 172.17.0.1

Here is some output from ifconfig from the xibodocker_cms-web_1 container:

  • eth0 has ipv4 address 172.18.0.4

So, please correct me if Iā€™m wrong, but it appears that br-175b5db1f2e6 is a bridge used by docker that is acting as a NAT for the docker containers, which is interesting due to the Ubuntu VM receiving an address on its eth0 from the external network indicating a bridged connection.

Docker creates virtual networks inside the machine to isolate different services from one another.

In that way, one service you run with Docker absolutely cannot interact with any other unless you expose those specific services to the other containers.

The CMS should still be seeing the connections to it from the source LAN IP address however.

The reason it doesnā€™t work on Windows, is thereā€™s a physical proxy application sitting between the VM and the containers, which is the cause of the changed IP address.

Hereā€™s a screenshot from my local CMS, and you can see the Player on the LAN correctly shows its LAN IP address, not the docker network address.

My cms-web container has the IP address 172.9.0.3 which is the private Docker network, so what youā€™re seeing is what I would expect to see too. The only difference being Iā€™m seeing the correct LAN IP address, and I presume you arenā€™t?

@alex Iā€™ve provided some screenshots below and for the record am using release_1.8.2_5.6:

As you can see, the ip address of my display is displayed as the address attached to br-175b5db1f2e6

Output from Ubuntu VM Host ifconfig:

I presume the existence of br-175b5db1f2e6 is problematic, and from my understanding I would expect the docker containers to be receiving addressing from docker0 not br-175b5db1f2e6, yes?

Absolutely not. You would 100% expect that to be there. Itā€™s the isolated network that docker makes for the CMS to use for its internal communications, with the MySQL and XMR containers.

What version of Docker are you using?

Where is that display installed? On another VM on the HyperV host? Or somewhere else on a completely separate machine? Are you running a reverse proxy infront of the CMS on the Ubuntu host machine by any chance?

@alex Okay thatā€™s valuable information, thanks for that Alex.

Docker Client: 17.09.0-ce
Docker Server: 17.09.0-ce

The display is installed on a separate system attached to a television. It is able to receive campaigns pushed by the server and is doing so currently. Iā€™m also able to receive screenshots, so I know XMR is functioning, although I have a separate issue open regarding the amount of the screen being captured.

There is currently no reverse proxy in front of the CMS, although I was intending to implement an Apache reverse proxy based on your guide here: Xibo 1.8.0 with Docker on Ubuntu 16.04

If youā€™re going to put a reverse proxy infront then the IP address reported is a moot point, as the proxy will pass the correct IP through to the containers for you. That sounds like your quickest route to what you want.

Good point, Iā€™ll report back with findings/resolution once I have configured the reverse proxy. Thanks Alex.

Reporting back as I said I would, configuring reverse proxy with an Apache server went along without a hitch, currently getting the correct IP Address of my Xibo Player.

Unsure as to why Docker on Linux inside a Hyper-V VM reported incorrectly.

Thanks again Alex.

1 Like

I know this thread hasnā€™t had any update in quite some time. Just curious if there has been any update to a fix for this on Windows? Having the same issue with all of my displays showing with the same IP: 172.18.0.1.

Xibo 2.0.1
docker for windows 2.0.0.3 (31259)
on Windows 10 Pro 64bit v1809 (17763.615)