Задать вопрос
trinitr0
@trinitr0
провинциальный админ

Почему происходят соединения по IPv6?

Помогите понять пожалуйста, почему у сервера есть соединения IPv6:
lsof -i 6              
apache2   473 www-data   17u  IPv6 3092520158 0t0  TCP 192.168.0.5:http->37-9-113-131.spider.yandex.com:60114 (ESTABLISHED)
apache2   571 www-data   17u  IPv6 3092515738  0t0  TCP 192.168.0.5:http->crawl-66-249-66-94.googlebot.com:46298 (ESTABLISHED)


Тогда как на сетевом интерфейсе прописан только частный IPv4 адрес и
интерфейс имеет только link-local IPv6 адрес не маршрутизируемый в Интернет:
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: vlan9@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 7e:9a:d6:eb:5d:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 brd 192.168.0.255 scope global vlan9
       valid_lft forever preferred_lft forever
    inet6 fe80::7c9a:d6ff:feeb:5d84/64 scope link 
       valid_lft forever preferred_lft forever


Кроме того, сам сервер расположен в DMZ, за файрволом.
  • Вопрос задан
  • 162 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
почему у сервера есть соединения IPv6

скорее всего потому что приложение, в данном случае апач, использует IPv4-mapped IPv6 адрес.
Можно посмотреть в /proc/net/tcp6, там эти адреса выглядят так:
sl  local_address                         remote_address                        st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
14: 0000000000000000FFFF00001F44CB0A:A5A2 0000000000000000FFFF00004B44CB0A:06B4 01 00000000:00000000 02:000000F6 00000000  1000        0 20787517 2 ffff8e7add433800 20 4 1 10 -1

т.е. 96 старших битов адреса -- ::FFFF:0:0, 32 младших бита -- обычный IPv4 адрес.

Вот пример кода, который, если его скомпилировать и запустить, открывает сокет ipv6, к которому можно присоединиться как по ipv4 так и по ipv6:
$ ./ipv6 &
$ nc 127.0.0.1 13330 &
$ lsof -i6
ipv6      18422 jcmvbkbc    3u  IPv6 21018438      0t0  TCP *:13330 (LISTEN)
ipv6      18422 jcmvbkbc    4u  IPv6 21018439      0t0  TCP localhost:13330->localhost:36196 (ESTABLISHED)
Ответ написан
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
Ээээ. А вас не смущает, что соединение установлено с ipv4 адресом сервера?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы