Я устанавливаю CentOS 6.5 с выбором пакета «Веб-сервер» и всем остальным по умолчанию.
Я делаю service tomcat6 start
, затем ss -ntlp
чтобы подтвердить, что Tomcat прослушивает порт 8080, как указано в файле Tomcat 6 /etc/tomcat6/server.xml по умолчанию. Это результат:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::111 :::* users:(("rpcbind",1012,11))
LISTEN 0 128 *:111 *:* users:(("rpcbind",1012,8))
LISTEN 0 100 :::8080 :::* users:(("java",1561,37))
LISTEN 0 128 :::22 :::* users:(("sshd",1216,4))
LISTEN 0 128 *:22 *:* users:(("sshd",1216,3))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",1102,7))
LISTEN 0 128 ::1:631 :::* users:(("cupsd",1102,6))
LISTEN 0 100 ::1:25 :::* users:(("master",1292,13))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",1292,12))
LISTEN 0 128 :::33081 :::* users:(("rpc.statd",1030,11))
LISTEN 0 128 *:33657 *:* users:(("rpc.statd",1030,9))
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",1561,39))
LISTEN 0 50 :::8009 :::* users:(("java",1561,38))
Означает ли это, что Tomcat прослушивает только IPv6, а не IPv6 и IPv4? Почему не работает нормально, так сказать "из коробки"?
Это зависит от значения sysctl net.ipv6.bindv6only
.
Если установлено значение 0, прослушиватель IPv6-адреса INADDR6_ANY (::
) будет прослушивать соединения IPv6 и IPv4, если только приложение не установит IPV6_V6ONLY на сокет.
Если установлено значение 1, такой слушатель будет прослушивать только соединения IPv6.
# sysctl net.ipv6.bindv6only
net.ipv6.bindv6only = 0
Проверить, прослушивает ли приложение IPv4, должно быть просто ...
telnet 127.0.0.1 8080