Enable IPv6
0.25pre [37385ba] allows users the option of connecting
to mythbackend
via IPv6 for file transfers.
This Wiki shows how to activate IPv6. This is part of a significant change in the way MythTV binds to sockets.
Contents
IPv6 Configuration
Interfaces typically have multiple IPv6 addresses. For help picking the right one, see #Which IPv6 address should be used?.
If IPv6 is known to be working, just complete the following. Otherwise, see #Prerequsites.
Stop all frontends and backends.
Using mythtv-setup
on the master backend, go to the General page, enter the
address of choice in the IPv6 address:
field.
The field should look something like this.
IPv6 address: fd01:a:b:1::123
Note that some (non MythTV) programs require their IPv6
addresses enclosed in brackets ([]
) or the
addition of a trailing percent sign and Zone Index
(e.g. %eth0
.) Neither of these should be used
with MythTV.
Use mythtv-setup
to configure any slave
backends with their own IPv6 addresses.
Restart the backend(s). Frontends will now perform file transfers (e.g. recording playback) via IPv6.
Which IPv6 address should be used?
The most likely choice is a Unique Local Address (ULA.) Use ULA's if all access to the backend will be within a LAN.
Note that even though ULAs are global addresses, no self respecting router will pass them out on the internet.
Use a search engine and look for: 'Unique Local Address generator' to find a site that will create ULAs correctly (for example.)
For details on constructing ULAs see RFC 4193.
MythTV must have a globally routeble IPv6 address (e.g.
2001:db8::1
) configured only if it is
necessary to run MythTV from a frontend/slave over the
internet.
Site Local (fec0::/10
) addresses were deprecated in 2004.
Host (::1) addresses are configured in MythTV automatically, but are not routable, use them for a stand alone system.
Since all Link Local addresses have the same prefix
(fe80::/10
), they require a Zone Index
(e.g. %eth0
) for routing and shouldn't
be used. MythTV will automatically ignore these
addresses.
To list currently assigned IPv6 addresses, type:
ifconfig ethX | grep inet6
inet6 addr: fe80::222:22ff:fe22:2222/64 Scope:Link inet6 addr: fd01:a:b:1::123/64 Scope:Global inet6 addr: 2001:db8::123/64 Scope:Global
In the above, the middle address is probably the best choice. It is also probably one that must be assigned manually.
If the desired address doesn't exist, use the configuration tool provided with the host's distribution to add it.
Entries in /etc/hosts
(DHCP, router etc.) are optional. The following
is an example for one host:
192.168.1.123 masterbe.local masterbe fd01:a:b:1::123 masterbe.local masterbe 2001:db8::123 masterbe.local masterbe
Back to #IPv6 Configuration
Prerequsites
Verify that IPv6 is active on each MythTV host.
If ssh
, for example, is known to work, a simple
test (run from the master backend) is:
for HOST in <list all frontend and slave backends here> do ssh -6 $HOST hostname done
If the test works for all frontends and slave backends, IPv6 can be added to MythTV.
If the above fails, see the following section.
Back to #IPv6 Configuration
What if there's a problem
- Make sure IPv6 hasn't been disabled either system wide or for the interface MythTV will use. Type:
sysctl -a 2> /dev/null | grep "ipv6.*disable"
net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0 net.ipv6.conf.eth0.disable_ipv6 = 0
- Some distributions keep these options in files under
/etc/sysctl.d
.
- Be sure any firewalls have been adjusted to accept the IPv6 addresses being used.
- MySQL connections are currently selected by the hostname information in config.xml and mysql.txt files. Unless a version of MySQL that supports IPv6 is being used, no changes are required.
- If there are entries in
/etc/hosts
(etc.), for both IPv4 and IPv6 addresses that have the same hostname (which is perfectly legal,) make sure the host's preferences pick IPv4 first./etc/gai.conf
may exist and control this.
Back to #IPv6 Configuration
Tools and sample output
These examples are all from a host with mythbackend
running and IPv6 configured. MySQL is running and using IPv4.
Obviously, these tools can be run on frontends and slave backends.
Warning: The output of some tools and in logfiles may expose IPv6 addresses. Some addresses contain a modified MAC address or globally addressable IPv6 addresses. When posting output to a public form, consider camouflaging them.
To make sure mythbackend
and mysqld
are listening for connections:
sudo netstat -pant | egrep '3306|6543'
When the backend is running, but no slave backends/frontends are connected, expect:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1198/mysqld tcp 0 0 192.168.1.123:6543 0.0.0.0:* LISTEN 26961/mythbackend tcp 0 0 127.0.0.1:6543 0.0.0.0:* LISTEN 26961/mythbackend tcp6 0 0 fd01:a:b:1::123:6543 :::* LISTEN 26961/mythbackend tcp6 0 0 ::1:6543 :::* LISTEN 26961/mythbackend
With one frontend connected and playing a recording, expect:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1384/mysqld tcp 0 0 192.168.1.123:6543 0.0.0.0:* LISTEN 26961/mythbackend tcp 0 0 127.0.0.1:6543 0.0.0.0:* LISTEN 26961/mythbackend tcp 0 0 192.168.1.123:3306 192.168.1.234:56538 ESTABLISHED 1384/mysqld tcp 0 0 192.168.1.123:3306 192.168.1.234:56601 ESTABLISHED 1384/mysqld tcp 0 0 192.168.1.123:6543 192.168.1.234:42760 ESTABLISHED 26961/mythbackend tcp 0 0 192.168.1.123:6543 192.168.1.234:42761 ESTABLISHED 26961/mythbackend tcp 0 0 192.168.10.204:3306 192.168.1.234:56532 ESTABLISHED 1384/mysqld tcp6 0 0 fd01:a:b:1::123:6543 fd01:a:b:1::456:36345 ESTABLISHED 26961/mythbackend tcp6 0 0 fd01:a:b:1::123:6543 fd01:a:b:1::456:36346 ESTABLISHED 26961/mythbackend tcp6 0 0 ::1:6543 :::* LISTEN 26961/mythbackend
If installed, nmap
may help diagnose the reason
that a connection fails. For example, a firewall
could be blocking access.
nmap -P0 -p 3306,6543 -6 --reason someHostName
The expected response is:
PORT STATE SERVICE REASON 3306/tcp closed mysql conn-refused 6543/tcp open mythtv syn-ack
Port 3306 fails in this test, as expected, because the MySQL version used
doesn't support IPv6 (remove the -6
flag above and this will work.)
Additional information is available from both mythbackend
and mythfrontend
if the --loglevel debug
is
used.
mythbackend --verbose general --nodblog --quiet \ --logpath /var/log/mythtv --loglevel debug
IPv6 addresses in the logs will have a-f in upper case and the
convention that allows consecutive 0s to be represented by ::
isn't used. So, the address used in this page: fd01:a:b:1::123
will appear as FD01:A:B:1:0:0:0:123
.
Back to #IPv6 Configuration