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
Öööh.... nem elég friss kernel?
Miért kell ennyi cim?
-------------------------
Dropbox refer: https://db.tt/V3RtXWLl
neut @ présház
Biztos szeret izgalmasan élni :D
É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
sub
feliratkozom en is
-+-+-+
Dropbox tarhely
Cave Canem
+-+-+-
Ha így pazaroljuk, az IPv6 címek is gyorsan elfogynak :)
lassan ideje fontolra venni az ipv8-at =)
http://www.ietf.org/mail-archive/web/ietf/current/msg23021.html
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.
Most már komolyan. Megírhatod, hogy ezzel mi a cél? Ha igen kérlek tedd meg mert érdekelne.
Átroutolni a forgalmat az NBH szerverein ;-)
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
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?
Szia!
Köszönöm a próbát. Nem hinném, hogy VirtualBox gond lenne, hiszen több valós gépen is próbáltam, és ott sem ment. Inkább arra gyanakszom, hogy én nem csinálok meg valamit, amit kellene.
Köszi, üdv.: Sics
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
Remélem ez segíteni fog:
http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/chapter-systemcheck.html
FathoM
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