Difference between revisions of "User:Llib"
(Sandbox for Enable IPv6 page) |
m (Unique not Universal, Section Name Change) |
||
Line 4: | Line 4: | ||
IPv6 use isn't mandatory. | IPv6 use isn't mandatory. | ||
− | == | + | ==Configure IPv6== |
Interfaces typically have multiple IPv6 addresses. | Interfaces typically have multiple IPv6 addresses. | ||
Line 36: | Line 36: | ||
==Which IPv6 address should be used?== | ==Which IPv6 address should be used?== | ||
− | Most likely, a | + | Most likely, a Unique Local Address (ULA.) |
Use a ULA if all access to the backend will be | Use a ULA if all access to the backend will be | ||
within a LAN. | within a LAN. | ||
Line 77: | Line 77: | ||
</pre> | </pre> | ||
− | [[# | + | [[#Configure IPv6]] |
==Prerequsites== | ==Prerequsites== | ||
Line 97: | Line 97: | ||
If the above fails, see the following section. | If the above fails, see the following section. | ||
− | [[# | + | [[#Configure IPv6]] |
==What if there's a problem== | ==What if there's a problem== | ||
Line 130: | Line 130: | ||
<code>/etc/gai.conf</code> may exist and control this. | <code>/etc/gai.conf</code> may exist and control this. | ||
− | [[# | + | [[#Configure IPv6]] |
==Tools and sample output== | ==Tools and sample output== | ||
Line 191: | Line 191: | ||
<code>mythbackend --setverbose network --quiet --nodblog</code> | <code>mythbackend --setverbose network --quiet --nodblog</code> | ||
− | [[# | + | [[#Configure IPv6]] |
All addresses in this Wiki are fake. No animals were harmed in their creation. | All addresses in this Wiki are fake. No animals were harmed in their creation. |
Revision as of 19:18, 17 December 2011
0.25pre [8bf5157] allows users to connect to their backend servers via IPv6
IPv6 use isn't mandatory.
Contents
Configure IPv6
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
go to the General page, enter the
address of choice in the Local Backend IP address: and in the
Master Backend IP address: fields.
The fields should look like this.
Local Backend IP address: fe01:a:b:1::123 Master Backend IP address: fe01:a:b:1::123
Note the address isn't enclosed in [brackets]
nor is there
a trailing percent sign and Scope ID (%eth0
.)
Use mythtv-setup
to configure any slave
backends with their own IPv6 addresses.
Restart the backend(s). Frontends will connect to them via IPv6 as they're restarted.
Which IPv6 address should be used?
Most likely, a Unique Local Address (ULA.) Use a ULA if all access to the backend will be within a LAN.
Details on constructing ULAs can be found in RFC 4193. An easier read is this Wiki.
Hosts must have a Global (e.g. 2001:db8::1) address configured only if it is necessary for a frontend/slave located outside of the Master Backend's LAN to access it.
Site Local (fec0::/10) addresses were deprecated in 2004.
Host (::1) and Link Local (fe80::/64) addresses are not routable and shouldn't be used.
To list currently assigned IPv6 addresses, type
ifconfig ethX | grep inet6
inet6 addr: fe80::222:22ff:fe22:2222/64 Scope:Link inet6 addr: fe01:a:b:1::123/64 Scope:Site 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.
Use the configuration tool provided with the host's distribution to add it.
An entry in /etc/hosts (DHCP, router etc.) is desirable. The following is an example for one host:
192.168.1.123 masterbe.local masterbe fe80::222:22ff:fe22:2222 masterbe-ll.local masterbe.ll fe01:a:b:1::123 masterbe.local masterbe 2001:db8::123 masterbe.local masterbe
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 ls -l /bin/ls done
If the test works for all frontends and slave backends, the system is ready for conversion.
If the above fails, see the following section.
What if there's a problem
- Make sure IPv6 hasn't been disabled either system wide or for the interface MythTV will be using:
sysctl -a | grep ipv6
. Watch for values set to 1:
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
- There is currently an issue if:
net.ipv6.bindv6only = 1
This can shutdown MythTV completely, before it is converted to use IPv6 addresses, as IPv4 addresses won't be able to connect to the backend #9820, #9840 and #10165. A fix is being tested off-ticket/off-list.
Any of the above can be controlled by changing files in /etc/sysctl.d
in
some distributions.
If there are no files with the value(s) that need to be changed, create a file like 60-bindv6only.conf
for example, and put net.ipv6.bindv6only = 0
in it.
- Be sure any firewalls have been adjusted to accept the IPv6 addresses being used.
- MySQL connections are currently selected by the 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.
Tools and sample output
These examples are all from a host with mythbackend
running and using IPv6. MySQL is running and using IPv4.
Obviously, they 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 frontends are connected, expect:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1436/mysqld tcp6 0 0 :::6543 :::* LISTEN 2123/mythbackend
With a frontend connected, expect:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1436/mysqld tcp 0 0 192.168.1.123:3306 192.168.1.200:33878 ESTABLISHED 1436/mysqld ... tcp6 0 0 :::6543 :::* LISTEN 2123/mythbackend tcp6 0 0 fe01:a:b:1::123:6543 fe01:a:b:1::456:35220 ESTABLISHED 2123/mythbackend tcp6 0 0 fe01:a:b:1::123:6543 fe01:a:b:1::456:35219 ESTABLISHED 2123/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 doesn't support IPv6 (remove the -6 flag above and this will work.)
As always, both mythbackend
and mythfrontend
can be started with additional logging enabled:
<code>mythbackend --verbose general,network --nodblog --quiet \ --logpath=/var/log/mythtv --loglevel=debug</code>
A currently running backend's logging can be changed with:
mythbackend --setverbose network --quiet --nodblog
All addresses in this Wiki are fake. No animals were harmed in their creation.