У меня есть туннель между моим ноутбуком и сервером, использующий OpenVPN 2.3.10 на клиенте и 2.3.13 на сервере. Первоначально он был настроен для IPv4, чтобы замаскировать мой IP-адрес как IP-адрес моего сервера и скрыть, где я подключаюсь от моего локального интернет-провайдера. Затем я добавил IPv6, так что теперь он имеет двойной стек. Я использовал маскировку с помощью IPv6, чтобы сделать вещи настолько простыми, насколько я ожидал.
Настройка моего ноутбука и информация:
lt1/pdh /home/pdh 1> cat /etc/issue.net
Ubuntu 16.04.1 LTS
lt1/pdh /home/pdh 2> uname -r
4.4.0-57-generic
lt1/pdh /home/pdh 3> ifconfig tun2kepler
tun2kepler Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.0.2.2 P-t-P:192.0.2.1 Mask:255.255.255.255
inet6 addr: fdff::2/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:425555 errors:0 dropped:0 overruns:0 frame:0
TX packets:386998 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:296698202 (296.6 MB) TX bytes:56672484 (56.6 MB)
Мои настройки и информация о сервере:
kepler/phil /home/phil 1> cat /etc/issue.net
Ubuntu 14.04.5 LTS
kepler/phil /home/phil 2> uname -r
3.13.0-101-generic
kepler/phil /home/phil 3> ifconfig tun2home
tun2home Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.0.2.1 P-t-P:192.0.2.2 Mask:255.255.255.255
inet6 addr: fdff::1/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:6730209 errors:0 dropped:0 overruns:0 frame:0
TX packets:7546625 errors:0 dropped:3158 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:835431595 (835.4 MB) TX bytes:5118239922 (5.1 GB)
Все работает включая IPv6. Проблема, с которой я столкнулся, заключается в том, что мой браузер и другие клиенты используют IPv4. Я хочу, чтобы они использовали IPv6 в тех случаях, когда можно использовать IPv6 (DNS имеет запись AAAA и / или / etc / hosts имеет адрес IPv6). Если есть только IPv6-адрес, он работает до тех пор, пока этот адрес доступен и действителен. Но если есть IPv4-адрес, то он используется. Я хочу, чтобы он предпочел IPv6. Поэтому я нашел в Google предложения по изменению /etc/gai.conf
файл, чтобы изменить приоритет, чтобы IPv4 был ниже. Вот этот файл:
# # #
precedence ::1/128 50
precedence ::/0 40
precedence 2002::/16 30
precedence ::/96 20
precedence ::ffff:0:0/96 12
precedence fec0::/10 10
precedence fc00::/7 19
precedence 2001:0::/32 18
# # #
label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
label fec0::/10 4
label fc00::/7 4
label 2001:0::/32 4
# # #
Значит, приоритет IPv4 равен 12, а у большинства IPv6 выше? Это правильная настройка? Что мне нужно изменить, чтобы мой ноутбук предпочитал IPv6, когда это возможно? Я понимаю, что могут быть случаи, когда мне следует предпочесть IPv4 вместо IPv6, но я даже не могу решить эту проблему. Я хотел бы, чтобы другие клиенты с поддержкой IPv6 также предпочитали IPv6 для всего хоста, если это возможно.