LINUX.ORG.RU
решено ФорумAdmin

служба поднятая на порту ipv6 отвечает по ipv4

 , ,


1

1

OS SLES

Почему служба поднятая на порту ipv6 отвечает по ipv4? Я выключил ipv6 в системе

sysctl -n net.ipv6.conf.all.disable_ipv6
1


# ifconfig
eth0      Link encap:Ethernet  HWaddr ХХ.ХХ.ХХ.ХХ
          inet addr:ХХ.ХХ.ХХ.ХХ  Bcast:ХХ.ХХ.ХХ.ХХ Mask:ХХ.ХХ.ХХ.ХХ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19355 errors:0 dropped:56 overruns:0 frame:0
          TX packets:9149 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:36403964 (34.7 Mb)  TX bytes:2492398 (2.3 Mb)

eth1      Link encap:Ethernet  HWaddr ХХ.ХХ.ХХ.ХХ
          inet addr:ХХ.ХХ.ХХ.ХХ  Bcast:ХХ.ХХ.ХХ.ХХ  Mask:ХХ.ХХ.ХХ.ХХ
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70 errors:0 dropped:48 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4184 (4.0 Kb)  TX bytes:1062 (1.0 Kb)

Службы висят в режиме LISTEN на ipv6 адресах

# netstat -tanp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1766/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2008/master
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      845/0
tcp        0      0 127.0.0.1:47038         0.0.0.0:*               LISTEN      1939/ovconfd
tcp        0      0 :::3306                 :::*                    LISTEN      1781/mysqld
tcp        0      0 :::5555                 :::*                    LISTEN      1/systemd
tcp        0      0 :::383                  :::*                    LISTEN      1384/ovbbccb

# Специально для тестов установил БД. и пытаюсь телнетом зайти на порт 3306 этой базы. но использую ipv4 адрес.

telnet 10.1.2.3 3306

соединение проходит, а в netstat появляется новое соединение:

tcp        0      0 :::383                  :::*                    LISTEN      1384/ovbbccb
tcp        0      0 10.1.2.3:383       10.1.2.5:50981     ESTABLISHED 1384/ovbbccb

Почему SLES так делает? где можно выключить такой обходной путь? это не только БД касается, но и многих других служб. Я не могу найти информацию какая служба в SLES поднимает соединение на Ipv4 когда порт открыт для ipv6. и как это выключить одним махом?



Последнее исправление: Shinma (всего исправлений: 2)

Ответ на: комментарий от Deleted

записал в /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.bindv6only = 1
и перезапустил систему. не помогло. службы отвечают.

Shinma
() автор топика
Ответ на: комментарий от Shinma

Походу в /proc/sys/net/ipv6/bindv6only стоит только дефолтное значение, приложение само может включать/выключать поддержку ipv4 в ipv6 сокете. Так что для каждого такого приложения кури документацию. Также при желании можно просто закрыть порт через iptables

Deleted
()
Ответ на: комментарий от Shinma

а через граб не пробывал отключать поддержку ipv6?

ving2
()
Ответ на: комментарий от Shinma

все службы переехали на ip4

Так и должно быть при отключении ipv6 в ядре. Только не переехали, а не используют ipv6 сокеты.

ving2
()

с точки зрения ipv6, ipv4 адрес выглядит так ::FFFF:10.1.2.3, твоя служба слушает ipv6 на всех интерфейсах. То, что на интерфейсах не выданы «нормальные» ipv6-адреса ничего для нее не значит.

anonymous
()

Еще вариант настроить файрвол, чтобы по IPv4 абы куда не пускало.

Infra_HDC ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.