240,000 IPv6 cím egy gépen?

Fórumok

Sziasztok!

A feladat az, hogy egy linux host hallgasson 240.000 IP címre. IPv4-re több megoldást is tudok. Az IPv6-tal vannak gondjaim. Ha egyesével adom hozzá az IPv6 címeket, az egyrészt 3 napig tart, másrészt a routing is belassul. A megoldás valami olyasmi lenne, hogy egy IPv6 cím range-et visszaroute-olok a loopback interfészre:
http://serverfault.com/questions/590038/adding-a-whole-ipv6-64-block-to…
http://serverfault.com/questions/209203/can-i-bind-a-large-block-of-add…
http://serverfault.com/questions/465889/linux-ipv6-how-to-bind-to-an-ar…

De sajnos nem megy. IPv4-en az analóg megoldás hibátlanul működik.


root@ubuntu-vm:~# ip -6 route get 8888::1
unreachable 8888::1 from :: dev lo table unspec proto kernel src fe80::a00:27ff:fece:5afd metric -1 error -101
/* Eddig oké, nem is kell ismernie */

root@ubuntu-vm:~# ip -6 route add local 8888::/16 dev lo

root@ubuntu-vm:~# ip -6 route show table local
local ::1 via :: dev lo proto none metric 0
local 8888::/16 dev lo metric 1024
local fe80::a00:27ff:fe1c:b171 via :: dev lo proto none metric 0
local fe80::a00:27ff:fe31:7d31 via :: dev lo proto none metric 0
local fe80::a00:27ff:fece:5afd via :: dev lo proto none metric 0
local fe80::a00:27ff:fefb:d04a via :: dev lo proto none metric 0
ff00::/8 dev eth1 metric 256
ff00::/8 dev eth3 metric 256
ff00::/8 dev eth0 metric 256
ff00::/8 dev eth2 metric 256

root@ubuntu-vm:~# ip -6 route get 8888::1
local 8888::1 from :: dev lo src ::1 metric 0
cache
/* Útvonal hozzáadva, routing megy, hibaüzenet nincs */

root@ubuntu-vm:~# ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
^C
--- 8888::1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1009ms
/* Ping bukik, a hibaüzenet furcsa */

root@ubuntu-vm:~# nc 8888::1 -l 20000
nc: Cannot assign requested address
/* Hálómacska csak nyávog, nem csinálja a dolgát */

Mit rontok el? Mi hiányzik? Hogy kellene?

Köszi, üdv.: Sics

Hozzászólások

Én kipróbáltam nekem megy:

root@szep-ThinkPad-X200s:~# ip -6 route add local 8888::/16 dev lo

root@szep-ThinkPad-X200s:~# ip -6 route show table local
local ::1 dev lo proto none metric 0
local 8888::/16 dev lo metric 1024
local fe80::a288:b4ff:fe09:f3c4 dev lo proto none metric 0
ff00::/8 dev wlan0 metric 256

root@szep-ThinkPad-X200s:~# ip -6 route get 8888::1
local 8888::1 from :: dev lo src ::1 metric 0
cache

root@szep-ThinkPad-X200s:~# ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
64 bytes from 8888::1: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 8888::1: icmp_seq=2 ttl=64 time=0.065 ms
64 bytes from 8888::1: icmp_seq=3 ttl=64 time=0.067 ms
64 bytes from 8888::1: icmp_seq=4 ttl=64 time=0.071 ms
64 bytes from 8888::1: icmp_seq=5 ttl=64 time=0.066 ms
64 bytes from 8888::1: icmp_seq=6 ttl=64 time=0.069 ms

root@szep-ThinkPad-X200s:~# ssh 8888::1
The authenticity of host '8888::1 (8888::1)' can't be established.
ECDSA key fingerprint is a2:ae:a3:a2:a0:ac:a6:ad:a3:a9:a6:af:ac:af:a6:a0.
Are you sure you want to continue connecting (yes/no)?

root@szep-ThinkPad-X200s:~# uname -a
Linux szep-ThinkPad-X200s 3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Ha így pazaroljuk, az IPv6 címek is gyorsan elfogynak :)

Csak hangosan gondolkodom...
1 ip címre 65535 x 2 = 131070 network socket
(mert udp is van a többi protokolt nem számolom)

240000 x 131070 = 31 456 800 000 lehetséges csatlakozás.

Következtetésem: meg akarják csinálni az egész google-t egy gépen.

Most már komolyan. Megírhatod, hogy ezzel mi a cél? Ha igen kérlek tedd meg mert érdekelne.

Sziasztok!

Köszönöm a gyors válaszokat. Szívesen leírom pontosabban, hogy miről van szó.

Telekom eszközök teszteléséhez készítünk felhasználókat szimuláló programot. A felhasználókról pedig azt tudni, hogy sokan vannak, és szeretik, ha saját IP címet kapnak. Ugyanakkora volumenű forgalmat lehetne generálni néhány IP címről az összes port felhasználásával, de az csak volumenét tekintve lenne ugyanaz. Törekszünk a minél valósághűbb szimulációra, amennyire csak lehet. Higgyétek el, köll a 240k cím.
De nem kell aggódnotok az IPv6 címek elfogyásától, csak a saját belső teszthálózatunkon belül használnánk őket. :)

Két gépen próbáltam, egy blade-en, illetve a laptopomon futó VirtualBox-on:
Linux server85 3.2.0-53-generic #81-Ubuntu SMP Thu Aug 22 21:01:03 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Linux ubuntu-vm 3.8.0-42-generic #63~precise1-Ubuntu SMP Fri Jul 4 21:16:26 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

A kernelverzió szerintem megfelelő. Mindkettő Ubuntu. Nem lehet, hogy Ubuntu alatt valami izé alapből ki van kapcsolva, amit be kéne kapcsolni?

Köszi, üdv.: Sics

Ubuntu 14.04:
root@mik-inew:/home/mik# ip -6 route add local 8888::/16 dev lo

root@mik-inew:/home/mik# ip -6 route show table local
local ::1 dev lo proto none metric 0
local 8888::/16 dev lo metric 1024
local fe80::a64e:31ff:fe8e:d040 dev lo proto none metric 0
local fe80::f21f:afff:fe46:821a dev lo proto none metric 0
ff00::/8 dev eth0 metric 256
ff00::/8 dev wlan0 metric 256

root@mik:/home/mik# ip -6 route get 8888::1
local 8888::1 from :: dev lo src ::1 metric 0
cache

root@mik:/home/mik# ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
64 bytes from 8888::1: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from 8888::1: icmp_seq=2 ttl=64 time=0.052 ms
^C
--- 8888::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.052/0.052/0.052/0.000 ms

root@mik:/home/mik# ssh 8888::1
The authenticity of host '8888::1 (8888::1)' can't be established.
ECDSA key fingerprint is 88:09:77:b5:6c:d3:28:a5:9c:ac:3a:0e:77:c9:fc:ec.
Are you sure you want to continue connecting (yes/no)? ^C
root@mik:/home/mik#

Most éppen nincs korábbi nálam... Nem lehet Virtualbox problem?

Debian7-tel VirtualBox-ban a viselkedés ugyanaz:


root@debian-amd64-700:/home/adminuser# ip -6 route get 8888::1
local 8888::1 from :: dev lo src ::1 metric 0
cache
root@debian-amd64-700:/home/adminuser# ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
^C
--- 8888::1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

root@debian-amd64-700:/home/adminuser# uname -a
Linux debian-amd64-700 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
root@debian-amd64-700:/home/adminuser#

Ez mintha olyasmi hiba lenne ránézésre, a végén valami ipsec-es megoldást írnak:
http://www.experts-exchange.com/OS/Linux/Distributions/Q_24406782.html

"Yes, we just had to down the ipsec0 interface and everything snapped back into place! Thanks again, great to have this problem over with."

Sziasztok!

Újabb fejlemények. Jelenleg 5 szerverem van, amivel dolgozhatok. Ezek közül az egyiken működik a dolog. A többin nem. Két különbséget vélek felfedezni. Az egyik apró kernel verzió eltérés, a másik az ip route get kimementében a jó esetben van via mező, a rossz esetben kitöltetlen.

Jó eset:

sics@server87:~$ ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
64 bytes from 8888::1: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 8888::1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 8888::1: icmp_seq=3 ttl=64 time=0.031 ms
^C
--- 8888::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.031/0.039/0.049/0.009 ms

sics@server87:~$ ip -6 route get 8888::1
local 8888::1 from :: via 8888::1 dev lo src 2001:1b70:8294:800:87::1 metric 0
cache
sics@server87:~$ ^C
sics@server87:~$ uname -a
Linux server87 3.2.0-60-generic #91-Ubuntu SMP Wed Feb 19 03:54:44 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Nem működő eset:

sics@server85:~$ ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
^C
--- 8888::1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

sics@server85:~$ ip -6 route get 8888::1
local 8888::1 from :: dev lo src 2001:1b70:8294:800:85::1 metric 0
cache
sics@server85:~$ uname -a
Linux server85 3.2.0-53-generic #81-Ubuntu SMP Thu Aug 22 21:01:03 UTC 2013 x86_64 x86_64 x86_64 GNU/Linu

A via becsempészése a route-ba - érthető módon - nem működik:

sics@server85:~$ sudo ip -6 route add local 8888::/16 via 8888::1 dev lo
RTNETLINK answers: No route to host

Mond ez valakinek valamit?

Köszi, üdv.: N. István

Halihó!

Hosszú idő után visszatértem erre a problémára. Kernel upgrade 3.2.0-53-ről 3.2.0-69-re megoldotta a problémát. Ne kérdezzétek miért, én sem tudok rá magyarázatot. Vagy csak a reboot kellett neki? Mindegy, lényeg, hogy így működik:

user@server88:~$ ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
^C
--- 8888::1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5040ms

user@server88:~$ sudo ip -6 route add local 8888::/16 dev lo
user@server88:~$ ping6 8888::1
PING 8888::1(8888::1) 56 data bytes
64 bytes from 8888::1: icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from 8888::1: icmp_seq=2 ttl=64 time=0.037 ms
64 bytes from 8888::1: icmp_seq=3 ttl=64 time=0.031 ms
64 bytes from 8888::1: icmp_seq=4 ttl=64 time=0.030 ms
^C
--- 8888::1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.030/0.034/0.039/0.005 ms
user@server88:~$ uname -a
Linux server88 3.2.0-69-generic #103-Ubuntu SMP Tue Sep 2 05:02:14 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Köszi, üdv.: Sics