dalex - Снёс всё базы, кору, установил с нуля:
Создал пул, и услугу коммутируемый доступ(без тарифа), подключил её юзверю пароль и логин qwe, поставил галку как и советовали RingDown.
Авториазция всё равно не проходит, причём если создать услугу передача IP-траффика, то соединение устанавливаеться. Не работает именно коммутируемый доступ, вот логи:
pppd.log:
Код: Выделить всё
Plugin /usr/lib/pppd/2.4.4/radius.so loaded.
RADIUS plugin initialized.
Plugin /usr/lib/pppd/2.4.4/radius.so loaded.
RADIUS plugin initialized.
using channel 8
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x8eb3dd16> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x0 <mru 1400> <magic 0x6c1d68e8> <pcomp> <accomp> <callback CBCP>]
sent [LCP ConfRej id=0x0 <callback CBCP>]
rcvd [LCP ConfReq id=0x1 <mru 1400> <magic 0x6c1d68e8> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <mru 1400> <magic 0x6c1d68e8> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0x8eb3dd16> <pcomp> <accomp>]
rcvd [LCP ConfNak id=0x1 <auth pap>]
sent [LCP ConfReq id=0x2 <asyncmap 0x0> <auth pap> <magic 0x8eb3dd16> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <auth pap> <magic 0x8eb3dd16> <pcomp> <accomp>]
rcvd [LCP Ident id=0x2 magic=0x6c1d68e8 "MSRASV5.10"]
rcvd [LCP Ident id=0x3 magic=0x6c1d68e8 "MSRAS-0-AMD64"]
rcvd [PAP AuthReq id=0x42 user="qwe" password=<hidden>]
rc_send_server: no reply from RADIUS server localhost:1812
sent [PAP AuthNak id=0x42 ""]
PAP peer authentication failed for qwe
sent [LCP TermReq id=0x3 "Authentication failed"]
rcvd [PAP AuthReq id=0x43 user="qwe" password=<hidden>]
Discarded non-LCP packet when LCP not open
rcvd [PAP AuthReq id=0x51 user="qwe" password=<hidden>]
Discarded non-LCP packet when LCP not open
rcvd [LCP TermAck id=0x3 "Authentication failed"]
Connection terminated.
radius_debug.log:
Код: Выделить всё
?Debug : Feb 19 23:17:25 RadiusSocket: RADIUS packet successfully received
?Debug : Feb 19 23:17:25 RadiusSocket: RADIUS raw data obtained
?Debug : Feb 19 23:17:25 RADIUS Packet: Size <82>; HDR.Size <82>
?Debug : Feb 19 23:17:25 AuthServer: Recv...
?Debug : Feb 19 23:17:25 AuthServer: Packet from NAS <127.0.0.1>
?Debug : Feb 19 23:17:25 RADIUS DBA: NAS found. Data size <0>
?Debug : Feb 19 23:17:25 AuthServer: Packet from <127.0.0.1> packet dump: RPacket:
Code: 1; ID: 135
<Vendor: 0; Attr: 1>[3]: 717765
<Vendor: 0; Attr: 2>[16]: 6d379b68fed96dba34b112c01b329008
<Vendor: 0; Attr: 4>[4]: c0a88a80
<Vendor: 0; Attr: 5>[4]: 00000000
<Vendor: 0; Attr: 6>[4]: 00000002
<Vendor: 0; Attr: 7>[4]: 00000001
<Vendor: 0; Attr: 31>[13]: 3139322e3136382e3133382e32
?Debug : Feb 19 23:17:25 AuthServer: User <qwe> connecting
?Debug : Feb 19 23:17:25 AuthServer: Session for sessionid <qwe> not found in <127.0.0.1> cache
?Debug : Feb 19 23:17:25 RADIUS DBA: Info for login <qwe> found. type <2>
?Debug : Feb 19 23:17:25 AuthServer: Auth scheme: PAP
?Debug : Feb 19 23:17:25 AuthServer: PAP: <qwe> vs <qwe>
?Debug : Feb 19 23:17:25 AuthServer: PAP: Authorized user <qwe>
?Debug : Feb 19 23:17:25 AuthServer: Dialup session limit:0 session count:0 for user:qwe
ERROR : Feb 19 23:17:25 DBAGlukError: empty border for slink 1
?Trace : Feb 19 23:17:25 trace: Obtained 8 stack frames.
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x80a2c91]
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x809f596]
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x8090352]
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x805f917]
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x805e7b5]
?Trace : Feb 19 23:17:25 trace: /netup/utm5/bin/utm5_radius [0x805d640]
?Trace : Feb 19 23:17:25 trace: /lib/libpthread.so.0 [0x7cb3db]
?Trace : Feb 19 23:17:25 trace: /lib/libc.so.6(clone+0x5e) [0x72506e]
Info : Feb 19 23:17:35 UTM5 Logger: New `?Debug : ' stream: /netup/utm5/log/radius_debug.log
Notice: Feb 19 23:17:35 RADIUS Config: interim_update_interval less than 60 sec! Setting it to 60 sec ...
?Debug : Feb 19 23:17:35 RADIUS Config: Using classic BaseTelephony
?Trace : Feb 19 23:17:35 RADIUS DBA: New state: ds_failed
Info : Feb 19 23:17:35 RadiusSocket: Listening on 0.0.0.0:1812
?Trace : Feb 19 23:17:35 AuthServer: Entering process loop
?Trace : Feb 19 23:17:35 AuthServer: Process loop step
?Debug : Feb 19 23:17:35 RadiusSocket: Waiting for RADIUS raw data
Info : Feb 19 23:17:35 RadiusSocket: Listening on 0.0.0.0:1813
Info : Feb 19 23:17:35 StreamManager: Registering message handlers..
Info : Feb 19 23:17:35 StreamManager: ID <0x2001> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamManager: ID <0x2002> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamManager: ID <0x202e> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamManager: ID <0x202f> handler <0x089973d0>
?Debug : Feb 19 23:17:35 RadiusSocket: Waiting for RADIUS raw data
Info : Feb 19 23:17:35 StreamConnection: Connection thread started. Peer 127.0.0.1:12758
?Debug : Feb 19 23:17:35 StreamConnection: Connection using TCP socket
?Debug : Feb 19 23:17:35 StreamConnection: System message recived
?Debug : Feb 19 23:17:35 StreamConnection: Challenge response sent
?Debug : Feb 19 23:17:35 StreamConnection: System message recived
Info : Feb 19 23:17:35 StreamConnection: Connection successfully authorized, user id <-2>
?Trace : Feb 19 23:17:35 RADIUS DBA: New state: ds_up
?Debug : Feb 19 23:17:35 RADIUS DBA: Updating Named Pool: qw
?Debug : Feb 19 23:17:35 RADIUS DBA: New Named Pool inserted: qw
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x201a>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:35 NASCache<127.0.0.1>: Created...
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: NAS <127.0.0.1> added/modified
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2001>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:35 NASCache<localhost>: Created...
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: NAS <localhost> added/modified
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2001>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: TimeRange <1>
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2007>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: DialUp service <1>
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2009>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: DLink: SLID/SID/AID/Login/Callback: 1/1/1/qwe/0
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x200b>, handler returns 0
Info : Feb 19 23:17:35 RADIUS DBA: Starting directions sort...
Info : Feb 19 23:17:35 RADIUS DBA: Finished directions sort...
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2011>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Account <1> with balance <50.000>
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2003>, handler returns 0
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: Updating realm list
?Debug : Feb 19 23:17:35 RADIUS DBA: Flushing REALM list
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x2019>, handler returns 0
?Debug : Feb 19 23:17:35 RADIUS Stream[plugin]: Ping reply received
?Debug : Feb 19 23:17:35 StreamConnection: Message id <0x202f>, handler returns 0
?Debug : Feb 19 23:17:40 RADIUS Stream[plugin]: Ping reply received
?Debug : Feb 19 23:17:40 StreamConnection: Message id <0x202f>, handler returns 0
?Debug : Feb 19 23:17:45 RadiusSocket: RADIUS packet successfully received
?Debug : Feb 19 23:17:45 RadiusSocket: RADIUS raw data obtained
?Debug : Feb 19 23:17:45 RADIUS Packet: Size <82>; HDR.Size <82>
?Debug : Feb 19 23:17:45 AuthServer: Recv...
?Debug : Feb 19 23:17:45 AuthServer: Packet from NAS <127.0.0.1>
?Debug : Feb 19 23:17:45 RADIUS DBA: NAS found. Data size <0>
?Debug : Feb 19 23:17:45 AuthServer: Packet from <127.0.0.1> packet dump: RPacket:
Code: 1; ID: 135
<Vendor: 0; Attr: 1>[3]: 717765
<Vendor: 0; Attr: 2>[16]: 6d379b68fed96dba34b112c01b329008
<Vendor: 0; Attr: 4>[4]: c0a88a80
<Vendor: 0; Attr: 5>[4]: 00000000
<Vendor: 0; Attr: 6>[4]: 00000002
<Vendor: 0; Attr: 7>[4]: 00000001
<Vendor: 0; Attr: 31>[13]: 3139322e3136382e3133382e32
?Debug : Feb 19 23:17:45 AuthServer: User <qwe> connecting
?Debug : Feb 19 23:17:45 AuthServer: Session for sessionid <qwe> not found in <127.0.0.1> cache
?Debug : Feb 19 23:17:45 RADIUS DBA: Info for login <qwe> found. type <2>
?Debug : Feb 19 23:17:45 AuthServer: Auth scheme: PAP
?Debug : Feb 19 23:17:45 AuthServer: PAP: <qwe> vs <qwe>
?Debug : Feb 19 23:17:45 AuthServer: PAP: Authorized user <qwe>
?Debug : Feb 19 23:17:45 AuthServer: Dialup session limit:0 session count:0 for user:qwe
ERROR : Feb 19 23:17:45 DBAGlukError: empty border for slink 1
?Trace : Feb 19 23:17:45 trace: Obtained 8 stack frames.
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x80a2c91]
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x809f596]
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x8090352]
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x805f917]
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x805e7b5]
?Trace : Feb 19 23:17:45 trace: /netup/utm5/bin/utm5_radius [0x805d640]
?Trace : Feb 19 23:17:45 trace: /lib/libpthread.so.0 [0x7cb3db]
?Trace : Feb 19 23:17:45 trace: /lib/libc.so.6(clone+0x5e) [0x72506e]
Info : Feb 19 23:17:55 UTM5 Logger: New `?Debug : ' stream: /netup/utm5/log/radius_debug.log
Notice: Feb 19 23:17:55 RADIUS Config: interim_update_interval less than 60 sec! Setting it to 60 sec ...
?Debug : Feb 19 23:17:55 RADIUS Config: Using classic BaseTelephony
?Trace : Feb 19 23:17:55 RADIUS DBA: New state: ds_failed
Info : Feb 19 23:17:55 RadiusSocket: Listening on 0.0.0.0:1812
?Trace : Feb 19 23:17:55 AuthServer: Entering process loop
?Trace : Feb 19 23:17:55 AuthServer: Process loop step
?Debug : Feb 19 23:17:55 RadiusSocket: Waiting for RADIUS raw data
Info : Feb 19 23:17:55 RadiusSocket: Listening on 0.0.0.0:1813
Info : Feb 19 23:17:55 StreamManager: Registering message handlers..
Info : Feb 19 23:17:55 StreamManager: ID <0x2001> handler <0x0a02a3d0>
Info : Feb 19 23:17:55 StreamManager: ID <0x202e> handler <0x0a02a3d0>
Info : Feb 19 23:17:55 StreamManager: ID <0x202f> handler <0x0a02a3d0>
?Debug : Feb 19 23:17:55 RadiusSocket: Waiting for RADIUS raw data
Info : Feb 19 23:17:55 StreamConnection: Connection thread started. Peer 127.0.0.1:12758
?Debug : Feb 19 23:17:55 StreamConnection: Connection using TCP socket
?Debug : Feb 19 23:17:55 StreamConnection: System message recived
?Debug : Feb 19 23:17:55 StreamConnection: Challenge response sent
?Debug : Feb 19 23:17:55 StreamConnection: System message recived
Info : Feb 19 23:17:55 StreamConnection: Connection successfully authorized, user id <-2>
?Trace : Feb 19 23:17:55 RADIUS DBA: New state: ds_up
?Debug : Feb 19 23:17:55 RADIUS DBA: Updating Named Pool: qw
?Debug : Feb 19 23:17:55 RADIUS DBA: New Named Pool inserted: qw
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x201a>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:55 NASCache<127.0.0.1>: Created...
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: NAS <127.0.0.1> added/modified
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2001>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:55 NASCache<localhost>: Created...
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: NAS <localhost> added/modified
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2001>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: TimeRange <1>
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2007>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: DialUp service <1>
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2009>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: Receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: End receiving RADIUS attributes ...
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: DLink: SLID/SID/AID/Login/Callback: 1/1/1/qwe/0
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x200b>, handler returns 0
Info : Feb 19 23:17:55 RADIUS DBA: Starting directions sort...
Info : Feb 19 23:17:55 RADIUS DBA: Finished directions sort...
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2011>, handler returns 0
?Debug : Feb 19 23:17:55 RADIUS Stream[plugin]: Account <1> with balance <50.000>
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2003>, handler returns 0
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: Updating realm list
?Debug : Feb 19 23:17:55 RADIUS DBA: Flushing REALM list
?Debug : Feb 19 23:17:55 StreamConnection: Message id <0x2019>, handler returns 0
radius_main.log:
Код: Выделить всё
ERROR : Feb 19 23:17:25 DBAGlukError: empty border for slink 1
Info : Feb 19 23:17:35 UTM5 Logger: New ` Info : ' stream: /netup/utm5/log/radius_main.log
Info : Feb 19 23:17:35 UTM5 Logger: New `?Debug : ' stream: /netup/utm5/log/radius_debug.log
Notice: Feb 19 23:17:35 RADIUS Config: interim_update_interval less than 60 sec! Setting it to 60 sec ...
Info : Feb 19 23:17:35 RadiusSocket: Listening on 0.0.0.0:1812
Info : Feb 19 23:17:35 RadiusSocket: Listening on 0.0.0.0:1813
Info : Feb 19 23:17:35 StreamManager: Registering message handlers..
Info : Feb 19 23:17:35 StreamManager: ID <0x2001> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamManager: ID <0x2002> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamManager: ID <0x202f> handler <0x089973d0>
Info : Feb 19 23:17:35 StreamConnection: Connection thread started. Peer 127.0.0.1:12758
Info : Feb 19 23:17:35 StreamConnection: Connection successfully authorized, user id <-2>
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:35 NASCache<127.0.0.1>: Created...
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: NAS <127.0.0.1> added/modified
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:35 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:35 NASCache<localhost>: Created...
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: NAS <localhost> added/modified
Info : Feb 19 23:17:35 RADIUS DBA: Starting directions sort...
Info : Feb 19 23:17:35 RADIUS DBA: Finished directions sort...
Info : Feb 19 23:17:35 RADIUS Stream[plugin]: Updating realm list
ERROR : Feb 19 23:17:45 DBAGlukError: empty border for slink 1
Info : Feb 19 23:17:55 UTM5 Logger: New ` Info : ' stream: /netup/utm5/log/radius_main.log
Info : Feb 19 23:17:55 UTM5 Logger: New `?Debug : ' stream: /netup/utm5/log/radius_debug.log
Notice: Feb 19 23:17:55 RADIUS Config: interim_update_interval less than 60 sec! Setting it to 60 sec ...
Info : Feb 19 23:17:55 RadiusSocket: Listening on 0.0.0.0:1812
Info : Feb 19 23:17:55 RadiusSocket: Listening on 0.0.0.0:1813
Info : Feb 19 23:17:55 StreamManager: Registering message handlers..
Info : Feb 19 23:17:55 StreamManager: ID <0x2001> handler <0x0a02a3d0>
Info : Feb 19 23:17:55 StreamManager: ID <0x2002> handler <0x0a02a3d0>
Info : Feb 19 23:17:55 StreamManager: ID <0x202f> handler <0x0a02a3d0>
Info : Feb 19 23:17:55 StreamConnection: Connection thread started. Peer 127.0.0.1:12758
Info : Feb 19 23:17:55 StreamConnection: Connection successfully authorized, user id <-2>
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:55 NASCache<127.0.0.1>: Created...
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: NAS <127.0.0.1> added/modified
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS. Data size <0>
ERROR : Feb 19 23:17:55 RADIUS DBA: Inserting NAS result. Data size <0>
Info : Feb 19 23:17:55 NASCache<localhost>: Created...
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: NAS <localhost> added/modified
Info : Feb 19 23:17:55 RADIUS DBA: Starting directions sort...
Info : Feb 19 23:17:55 RADIUS DBA: Finished directions sort...
Info : Feb 19 23:17:55 RADIUS Stream[plugin]: Updating realm list
Прошу прощения за объмность, но полнота информации дороже.
Меня смущают строки:
Код: Выделить всё
ERROR : Feb 19 23:17:45 DBAGlukError: empty border for slink 1
Т.Е. запросы до радиуса доходят всё ок, но потом непонятное что-то происходит. Если отключить RingDown то логи иные. Могу выложить их и файлы конфигурации Radius и ppp. Подскажите мастера что это за ошибки?