У нас есть веб-сервер под управлением Ubuntu 12.04 LTS, Tomcat 7 и Oracle Java. До сих пор мы обслуживали веб-приложение по IPv4-адресу через порты 80 и 443 (80 перенаправляет на 443).
Я пытаюсь сделать так, чтобы Tomcat обслуживал то же приложение на тех же портах и через IPv6. ОС настроена для IPv6 правильно, у нее есть собственные адреса IPv6 с глобальной областью действия.
Что не работает, так это то, что Tomcat/Java не прослушивает IPv6. Вот вывод команды netstat -tlpn:
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 957/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2686/java
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1058/postgres
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1243/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2686/java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 2686/java
tcp6 0 0 :::2222 :::* LISTEN 957/sshd
tcp6 0 0 :::5432 :::* LISTEN 1058/postgres
tcp6 0 0 ::1:25 :::* LISTEN 1243/master
Как видите, Java прослушивает только соединения tcp, в то время как postgres и ssh также принимают соединения tcp6 на тех же портах, что и с IPv4.
Я обнаружил свойство java.net.preferIPv4Stack = true в скрипте запуска Tomcat, но когда я установил для него значение false, tomcat начал слушать ТОЛЬКО на локальном tcp6, порт 8005. Мне также нужно слушать ::: 443 и ::: 80. Также он исчез из соединений IPv4, но я считаю, что ::: может связывать как IP v4, так и v6.
Я должен отметить, что я не программист на Java, моя ответственность - только сам сервер. Также я не хочу много экспериментировать, так как это рабочий сервер.
Любая помощь очень ценится! ура