เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผเดฎเดพเตผเดเตเดเต เดเดชเดฟ เดตเดฟเดฒเดพเดธเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเต เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดพเดธเตโเดเต เดเดคเตเดคเดฟ. เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเตเดฏเดตเดธเตเดฅเดเตพ:
- เด เดเดเตเดเดพเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเตเตผเดตเตผ เดจเตฝเดเดฟเดฒเตเดฒ - เดจเดฟเดเตเดเตพ เด เดคเต เดเตเดฏเตเดฏเตเด ๐
- เดตเดฐเดฟเดเตเดเดพเตผเดเตเดเต DHCP เดตเดดเดฟ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดฒเดญเดฟเดเตเดเดฃเด
- เดถเตเดเดเดฒ เดตเตเดตเดฟเดงเตเดฏเดชเตเตผเดฃเตเดฃเดฎเดพเดฃเต. เดเดคเดฟเตฝ PON เดเดชเดเดฐเดฃเดเตเดเดณเตเด เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตโเดค เดเดชเตโเดทเตป 82 เดเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเตเดตเดฟเดเตเดเตเดเดณเตเด เดนเตเดเตเดเตโเดธเตโเดชเตเดเตเดเตเดเดณเตเดณเตเดณ เดตเตเดซเต เดฌเตเดธเตเดเดณเตเด เดเตพเดชเตเดชเตเดเตเดจเตเดจเต.
- เดเดฐเต เดเดชเดฟ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดคเตเดเตเดเดฟเดฒเตเด เดตเตเดฏเดตเดธเตเดฅเดเตพเดเตเดเต เดเตเดดเดฟเตฝ เดกเดพเดฑเตเดฑ เดตเดฐเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ "เด เดคเดฟเดฅเดฟ" เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเดชเดฟ เดจเตฝเดเดฃเด.
เดจเดฒเตเดฒ เดตเดถเด: "เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป" เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดธเตเตผเดตเตผ เดซเตเดฐเตเดฌเดฟเดเดธเตเดกเดฟเดฏเดฟเตฝ เดเดชเตเดชเตเดดเตเด เดเดฃเตเดเต, เดชเดเตเดทเต เด
เดคเต "เดฆเตเดฐเตเดฏเดพเดฃเต" ;), "เด เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเตฝ เดคเดจเตเดจเต" เด
เดฒเตเดฒ.
Mikrotik เดเดจเตเดจ เด
เดคเตเดญเตเดคเดเดฐเดฎเดพเดฏ เดเดชเดเดฐเดฃเดตเตเดฎเตเดฃเตเดเต. เดชเตเดคเตเดตเดพเดฏ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดกเดฏเดเตเดฐเด เดเดคเตเดชเตเดฒเตเดฏเดพเดฃเต:
เดเตเดฑเดเตเดเต เดเดฒเตเดเดฟเดเตเด เดถเตเดทเด, เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผเดฎเดพเตผเดเตเดเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต FreeRadius เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดธเตเดเตเด เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต: เดเดเตเดเตพ เดฎเตเดเตเดฐเตเดเดฟเดเตเดเดฟเตฝ DHCP เดธเตเตผเดตเดฑเตเด เด
เดคเดฟเตฝ เดฑเตเดกเดฟเดฏเดธเต เดเตเดฒเดฏเดจเตเดฑเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเดจเตเดจเต. เดเดเตเดเตพ DHCP เดธเตเตผเดตเตผ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต -> เดฑเตเดกเดฟเดฏเดธเต เดเตเดฒเดฏเดจเตเดฑเต -> เดฑเตเดกเดฟเดฏเดธเต เดธเตเตผเดตเตผ เดเดฃเดเตเดทเตป.
เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเดฟเดฒเตเดฒ. เดชเดเตเดทเต! เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเตฝ เดชเดฟเดถเดพเดเต เดเดฃเตเดเต. เด เดคเดพเดฏเดคเต:
- เด เดธเตโเดเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต PON OLT-เดจเต เด เดเดเตเดเดพเดฐเด เดจเตฝเดเตเดฎเตเดชเตเตพ, เดนเตเดกเตโเดกเตเตปเดกเดฟเดจเตเดฑเต MAC เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดชเดฏเตเดเตเดคเต เดจเดพเดฎเดตเตเด MAC PON Onu-เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดฐเต เดเดเดจเตเดฑเต-เดธเตผเดเตเดฏเตเดเตเดเต-เดเดกเดฟเดฏเตเด เดเดฐเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดชเดพเดธเตโเดตเตเดกเตเด เดเดณเตเดณ เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ FreeRadius-เดฒเตเดเตเดเต เด เดฏเดฏเตเดเตเดเตเดจเตเดจเต.
- เดเดชเตเดทเตป 82 เดเดณเตเดณ เดธเตเดตเดฟเดเตเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดงเดฟเดเดพเดฐเดชเตเดชเตเดเตเดคเตเดคเตเดฎเตเดชเตเตพ, FreeRadius-เดจเต เดตเดฐเดฟเดเตเดเดพเดฐเดจเตเดฑเต เดเดชเดเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต MAC-เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดฐเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดเดชเดฏเตเดเตเดคเต-เดจเดพเดฎเด เดเดณเตเดณ เดเดฐเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดฏเดฅเดพเดเตเดฐเดฎเด Agent-Circuit-Id, Agent-Remote-Id เดเดจเตเดจเดฟเดต เด เดเดเตเดเตเดจเตเดจ เด เดงเดฟเด เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเตพ เดจเดฟเดฑเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดตเตเดฃเตเดเตเด MAC-เดจเตเดฑเต MAC เดฑเดฟเดฒเต เดธเตเดตเดฟเดเตเดเต, เดตเดฐเดฟเดเตเดเดพเดฐเดจเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเตผเดเตเดเต.
- เดตเตเดซเต เดชเตเดฏเดฟเดจเตเดฑเตเดเดณเตเดณเตเดณ เดเดฟเดฒ เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผเดฎเดพเตผ PAP-CHAP เดชเตเดฐเตเดเตเดเตเดเตเดเตเดณเตเดเตพ เดตเดดเดฟ เด เดเดเตเดเดฐเดฟเดเตเดเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
- WIFI เดชเตเดฏเดฟเดจเตเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฟเดฒ เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผเดฎเดพเตผ เดชเดพเดธเตโเดตเตเดกเต เดเดฒเตเดฒเดพเดคเต, WIFI เดชเตเดฏเดฟเดจเตเดฑเดฟเดจเตเดฑเต MAC เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดเดฐเต เดเดชเดฏเตเดเตเดคเต-เดจเดพเดฎเด เดเดชเดฏเตเดเดฟเดเตเดเต เด เดเดเตเดเดฐเดฟเดเตเดเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเดฟเดคเตเดฐ เดชเดถเตเดเดพเดคเตเดคเดฒเด: เดเดจเตเดคเดพเดฃเต เดกเดฟเดเดเตเดเตเดธเดฟเดชเดฟเดฏเดฟเดฒเต "เดเดชเตเดทเตป 82"
เดเตเดเตเดคเตฝ เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดฎเดพเดฑเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ DHCP เดชเตเดฐเตเดเตเดเตเดเตเดเตเดณเดฟเดจเดพเดฏเตเดณเตเดณ เด เดงเดฟเด เดเดชเตเดทเดจเตเดเดณเดพเดฃเดฟเดคเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเดจเตเดฑเต-เดธเตผเดเตเดฏเตเดเตเดเต-เดเดกเดฟ, เดเดเดจเตเดฑเต-เดฑเดฟเดฎเตเดเตเดเต-เดเดกเดฟ เดซเตเตฝเดกเตเดเดณเดฟเตฝ. เดฑเดฟเดฒเต เดธเตเดตเดฟเดเตเดเดฟเดจเตเดฑเต MAC เดตเดฟเดฒเดพเดธเดตเตเด เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผ เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเตผเดเตเดเตเด เดเตเดฎเดพเดฑเดพเตป เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. PON เดเดชเดเดฐเดฃเดเตเดเดณเตเดเตเดฏเต เดตเตเดซเต เดฌเตเดธเต เดธเตเดฑเตเดฑเตเดทเดจเตเดเดณเตเดเตเดฏเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเดจเตเดฑเต-เดธเตผเดเตเดฏเตเดเตเดเต-เดเดกเดฟ เดซเตเตฝเดกเดฟเตฝ เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเดเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ (เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผ เดชเตเตผเดเตเดเต เดเดฒเตเดฒ). เด เดเตเดธเดฟเตฝ DHCP เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดคเต เดธเตเดเตเด เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต:
เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเดฟ เด เดธเตเดเตเด เดเดคเตเดชเตเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต:
- เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดชเดฏเตเดเตเดคเต เดเดชเดเดฐเดฃเดเตเดเตพ เดเดฐเต DHCP เดชเตเดฐเดเตเดทเตเดชเดฃ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเตเดจเตเดจเต
- เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผ เดเดชเดเดฐเดฃเดเตเดเตพ เดจเตเดฐเดฟเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดชเดเดฐเดฃเด (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดธเตเดตเดฟเดเตเดเต, เดตเตเดซเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ PON เดฌเตเดธเต เดธเตเดฑเตเดฑเตเดทเตป) เด เดชเดพเดเตเดเดฑเตเดฑเดฟเดจเต "เดคเดเดเตเดเต" เดฎเดพเดฑเตเดฑเตเดเดฏเตเด, เด เดงเดฟเด เดเดชเตเดทเดจเตเดเตพ เดเดชเตโเดทเตป 82, เดฑเดฟเดฒเต เดเดเดจเตเดฑเต เดเดชเดฟ เดตเดฟเดฒเดพเดธเด เดเดจเตเดจเดฟเดต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เด เดคเต เดเตเดเตเดคเตฝ เดเตเดฎเดพเดฑเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดถเตเดเดเดฒ.
- DHCP เดธเตเตผเดตเตผ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดฑเดฟเดฒเต เดเดชเดเดฐเดฃเดคเตเดคเดฟเดฒเตเดเตเดเต เด เดฏเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต
- เดฑเดฟเดฒเต เดเดชเดเดฐเดฃเด เดชเตเดฐเดคเดฟเดเดฐเดฃ เดชเดพเดเตเดเดฑเตเดฑเต เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผ เดเดชเดเดฐเดฃเดคเตเดคเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดจเตเดจเต
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฒเตเดฒเดพเด เด เดคเตเดฐ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ; เด เดคเดฟเดจเดจเตเดธเดฐเดฟเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดชเดเดฐเดฃเดเตเดเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
FreeRadius เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดซเตเดฐเตเดฑเตเดกเดฟเดฏเดธเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเต เดจเตเดเดพเดจเดพเดเตเด, เดชเดเตเดทเต เดเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณเดคเตเด เด เดตเตเดฏเดเตเดคเดตเตเดฎเดพเดฃเต... เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เดจเดฟเดเตเดเตพ N เดฎเดพเดธเดเตเดเตพเดเตเดเต เดถเตเดทเด เด เดตเดฟเดเต เดชเตเดเตเดฎเตเดชเตเตพ "เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต." เด เดคเดฟเดจเดพเตฝ, เดชเตเดคเตเดคเดฃเดฟเตฝ FreeRadius-เดจเดพเดฏเดฟ เดเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เด เดเดเตเดเดพเดฐ เดฎเตเดกเตเดฏเตเตพ เดเดดเตเดคเดพเตป เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. MySQL เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เด เดเดเตเดเดพเดฐ เดกเดพเดฑเตเดฑ เดเดเตเดเตเดเตเด. เด เดคเดฟเดจเตเดฑเต เดเดเดจ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ; เดเดจเตเดคเดพเดฏเดพเดฒเตเด, เดเดฒเตเดฒเดพเดตเดฐเตเด เด เดคเต "เดคเดเตเดเตพเดเตเดเตเดตเตเดฃเตเดเดฟ" เดเดฃเตเดเดพเดเตเดเตเด. เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด, เดซเตเดฐเตเดฑเตเดกเดฟเดฏเดธเดฟเดจเดพเดฏเดฟ sql เดฎเตเดกเตเดฏเตเดณเดฟเดจเตเดชเตเดชเด เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเตเดจเตเดจ เดเดเดจ เดเดพเตป เดเดเตเดคเตเดคเต, เดฒเตเดเดฟเตป-เดชเดพเดธเตโเดตเตเดกเดฟเดจเต เดชเตเดฑเดฎเต เดเดฐเต เดตเดฐเดฟเดเตเดเดพเดฐเดจเตเด เดเดฐเต เดฎเดพเดเต, เดชเตเตผเดเตเดเต เดซเตเตฝเดกเต เดเดจเตเดจเดฟเดต เดเตเตผเดคเตเดคเต เดเตเดฑเตเดคเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดฟ.
เด เดคเดฟเดจเดพเตฝ, เดเดฆเตเดฏเด FreeRadius เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด:
cd /usr/ports/net/freeradius3
make config
make
install clean
เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ, เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด:
เดชเตเดคเตเดคเตบ เดฎเตเดกเตเดฏเตเดณเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดฐเต เดธเดฟเดเดฒเดฟเดเตเดเต เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเต (เด
เดคเดพเดฏเดคเต เด
เดคเต "เดเตบ" เดเตเดฏเตเดฏเตเด):
ln -s /usr/local/etc/raddb/mods-available/python /usr/local/etc/raddb/mods-enabled
เดชเตเดคเตเดคเดฃเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเดฐเต เด เดงเดฟเด เดฎเตเดกเตเดฏเตเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด:
pip install mysql-connector
FreeRadius-เดจเตเดณเตเดณ เดชเตเดคเตเดคเตบ เดฎเตเดกเตเดฏเตเตพ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ, เดจเดฟเดเตเดเตพ python_path เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดฎเตเดกเตเดฏเตเตพ เดคเดฟเดฐเดฏเตฝ เดชเดพเดคเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดจเดฟเดเตเดเต เดเดคเต เดเดฃเตเดเต:
python_path="/usr/local/etc/raddb/mods-config/python:/usr/local/lib/python2.7:/usr/local/lib/python27.zip:/usr/local/lib/python2.7:/usr/local/lib/python2.7/plat-freebsd12:/usr/local/lib/python2.7/lib-tk:/usr/local/lib/python2.7/lib-old:/usr/local/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/site-packages"
เดชเตเดคเตเดคเตบ เดเดจเตเดฑเตผเดชเตเดฐเตเดฑเตเดฑเตผ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเต เดเดฎเดพเตปเดกเตเดเตพ เดจเตฝเดเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดชเดพเดคเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด:
root@phaeton:/usr/local/etc/raddb/mods-enabled# python
Python 2.7.15 (default, Dec 8 2018, 01:22:25)
[GCC 4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final 335540)] on freebsd12
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-freebsd12', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
>
เดจเดฟเดเตเดเตพ เด เดจเดเดชเดเดฟ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดชเตเดคเตเดคเดฃเดฟเตฝ เดเดดเตเดคเดฟเดฏเดคเตเด FreeRadius เดฒเตเดเตเดเต เดเตเดฏเตเดคเดคเตเดฎเดพเดฏ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดฑเดเตเดเตเดฎเดคเดฟเดฏเดฟเตฝ เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฎเตเดกเตเดฏเตเดณเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดเดฏเดฟเดฒเตเดฒ. เดเตเดเดพเดคเต, เดฎเตเดกเตเดฏเตเตพ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดเตเตพ เดเดคเดฑเตเดธเตเดทเดจเตเด เด เดเตเดเตเดฃเตเดเดฟเดเดเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเดเดเตเดทเดจเตเดเตพ เดจเดฟเดเตเดเตพ เด เตบเดเดฎเดจเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดฎเตเดกเตเดฏเตเตพ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
python {
python_path="/usr/local/etc/raddb/mods-config/python:/usr/local/lib/python2.7:/usr/local/lib/python2.7/site-packages:/usr/local/lib/python27.zip:/usr/local/lib/python2.7:/usr/local/lib/python2.7/plat-freebsd12:/usr/local/lib/python2.7/lib-tk:/usr/local/lib/python2.7/lib-old:/usr/local/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/site-packages"
module = work
mod_instantiate = ${.module}
mod_detach = ${.module}
mod_authorize = ${.module}
func_authorize = authorize
mod_authenticate = ${.module}
func_authenticate = authenticate
mod_preacct = ${.module}
func_preacct = preacct
mod_accounting = ${.module}
func_accounting = accounting
mod_checksimul = ${.module}
mod_pre_proxy = ${.module}
mod_post_proxy = ${.module}
mod_post_auth = ${.module}
mod_recv_coa = ${.module}
mod_send_coa = ${.module}
}
work.py เดธเตโเดเตเดฐเดฟเดชเตโเดฑเตเดฑเต (เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเตเดฒเตเดฒเดพเด) /usr/local/etc/raddb/mods-config/python-เตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเดฃเด, เดเดจเดฟเดเตเดเต เดเดเต เดฎเตเดจเตเดจเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดฃเตเดเต.
work.py:
#!/usr/local/bin/python
# coding=utf-8
import radiusd
import func
import sys
from pprint import pprint
mysql_host="localhost"
mysql_username="ัะบะฐััะบ"
mysql_password="ััะบะฐััะบะฐััะบ"
mysql_base="ััะบะฐัะบัะฐัั"
def instantiate(p):
print ("*** instantiate ***")
print (p)
# return 0 for success or -1 for failure
def authenticate(p):
print ("*** ะััะตะฝัะธะบะฐัะธั!!***")
print (p)
def authorize(p):
radiusd.radlog(radiusd.L_INFO, '*** radlog call in authorize ***')
conn=func.GetConnectionMysql(mysql_host, mysql_username, mysql_password, mysql_base);
param=func.ConvertArrayToNames(p);
pprint(param)
print ("*** ะะฒัะพัะธะทะฐัะธั ***")
reply = ()
conf = ()
cnt=0
username="";mac="";
# ัะฝะฐัะฐะปะฐ ะฟัะพะฒะตััะตะผ "ะบะฐะบ ะฟะพะปะพะถะตะฝะพ", ะฟะพ ัะฒัะทะบะต ะปะพะณะธะฝ/ะฟะฐัะพะปั
if ("User-Name" in param) and ("User-Password" in param) :
print ("ะะฐัะธะฐะฝั ะฐะฒัะพัะธะทะฐัะธะธ (1): ะตััั ะปะพะณะธะฝ-ะฟะฐัะพะปั")
pprint(param["User-Name"])
pprint(param["User-Password"])
pprint(conn)
print(sys.version_info)
print (radiusd.config)
sql="select radreply.attribute,radreply.value from radcheck inner join radreply on radreply.username=radcheck.username where radcheck.username=%s and radcheck.value=%s"
print(sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql,[param["User-Name"], param["User-Password"]]);
row = cursor.fetchone()
while row is not None:
cnt=cnt+1
username=row["username"]
reply = reply+((str(row["attribute"]),str(row["value"])), )
row = cursor.fetchone()
# ะฒะฐัะธะฐะฝั, ััะพ User-Name - ััะพ ะะะก ะฐะดัะตั ะะก,ะฟะฐัะพะปั ะธ ะฟะพััะฐ ะฝะตั
if ("User-Name" in param) and ("User-Password" in param) and (cnt==0):
if param["User-Password"] =='':
if ":" in param["User-Name"]:
pprint(param["User-Name"])
print ("ะะฐัะธะฐะฝั ะฐะฒัะพัะธะทะฐัะธะธ (2): User-Name - ััะพ MAC ะฐะดัะตั ะฑะฐะทะพะฒะพะน ััะฐะฝัะธะธ, ะฟะพััะฐ ะธ ะฟะฐัะพะปั ะฝะตั")
sql="select radreply.username,radreply.attribute,radreply.value from radcheck inner join radreply on radreply.username=radcheck.username where REPLACE(radcheck.mac,':','') = REPLACE(REPLACE('"+str(param["User-Name"])+"','0x',''),':','') and radcheck.sw_port=''"
print (sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
row = cursor.fetchone()
while row is not None:
cnt=cnt+1
username=row["username"]
mac=param["User-Name"]
reply = reply+((str(row["attribute"]),str(row["value"])), )
row = cursor.fetchone()
if ("Agent-Remote-Id" in param) and ("User-Password" in param) and (cnt==0):
if param["User-Password"] =='':
pprint(param["Agent-Remote-Id"])
print ("ะะฐัะธะฐะฝั ะฐะฒัะพัะธะทะฐัะธะธ (2.5): Agent-Remote-Id - ััะพ MAC ะฐะดัะตั PON ะพะฑะพััะดะพะฒะฐะฝะธั")
sql="select radreply.username,radreply.attribute,radreply.value from radcheck inner join radreply on radreply.username=radcheck.username where REPLACE(radcheck.mac,':','') = REPLACE(REPLACE('"+str(param["Agent-Remote-Id"])+"','0x',''),':','') and radcheck.sw_port=''"
print (sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
row = cursor.fetchone()
while row is not None:
cnt=cnt+1
username=row["username"]
mac=param["User-Name"]
reply = reply+((str(row["attribute"]),str(row["value"])), )
row = cursor.fetchone()
#ะะฐัะธะฐะฝั, ััะพ Agent-Remote-Id - ััะพ ะะะก ะฐะดัะตั ะะก,ะฟะฐัะพะปั ะธ ะฟะพััะฐ ะฝะตั ะธ ะฟัะตะดัะดััะธะต ะฒะฐัะธะฐะฝัั ะฟะพะธัะบะฐ IP ัะตะทัะปััะฐัะฐ ะฝะต ะดะฐะปะธ
if ("Agent-Remote-Id" in param) and ("User-Password" not in param) and (cnt==0):
pprint(param["Agent-Remote-Id"])
print ("ะะฐัะธะฐะฝั ะฐะฒัะพัะธะทะฐัะธะธ (3): Agent-Remote-Id - ะะะก ะฑะฐะทะพะฒะพะน ััะฐะฝัะธะธ/ะฟะพะฝ. ะะพััะฐ ะฒ ะฑะธะปะปะธะฝะณะต ะฝะตั")
sql="select radreply.username,radreply.attribute,radreply.value from radcheck inner join radreply on radreply.username=radcheck.username where REPLACE(radcheck.mac,':','') = REPLACE(REPLACE('"+str(param["Agent-Remote-Id"])+"','0x',''),':','') and radcheck.sw_port=''"
print(sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
row = cursor.fetchone()
while row is not None:
cnt=cnt+1
mac=param["Agent-Remote-Id"]
username=row["username"]
reply = reply+((str(row["attribute"]),str(row["value"])), )
row = cursor.fetchone()
#ะะฐัะธะฐะฝั, ััะพ ะฟัะตะดัะดััะธะต ะฟะพะฟััะบะธ ัะตะทัะปััะฐัะฐ ะฝะต ะดะฐะปะธ, ะฝะพ ะตััั Agent-Remote-Id ะธ Agent-Circuit-Id
if ("Agent-Remote-Id" in param) and ("Agent-Circuit-Id" in param) and (cnt==0):
pprint(param["Agent-Remote-Id"])
pprint(param["Agent-Circuit-Id"])
print ("ะะฐัะธะฐะฝั ะฐะฒัะพัะธะทะฐัะธะธ (4): ะฐะฒัะพัะธะทะฐัะธั ะฟะพ Agent-Remote-Id ะธ Agent-Circuit-Id, ะฒ ะฑะธะปะปะธะฝะณะต ะตััั ะฟะพัั/ะผะฐะบ")
sql="select radreply.username,radreply.attribute,radreply.value from radcheck inner join radreply on radreply.username=radcheck.username where upper(radcheck.sw_mac)=upper(REPLACE('"+str(param["Agent-Remote-Id"])+"','0x','')) and upper(radcheck.sw_port)=upper(RIGHT('"+str(param["Agent-Circuit-Id"])+"',2)) and radcheck.sw_port<>''"
print(sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
row = cursor.fetchone()
while row is not None:
cnt=cnt+1
mac=param["Agent-Remote-Id"]
username=row["username"]
reply = reply+((str(row["attribute"]),str(row["value"])), )
row = cursor.fetchone()
# ะตัะปะธ ัะฐะบ ะดะพ ัะธั
ะฟะพั IP ะฝะต ะฟะพะปััะตะฝ, ัะพ ะฒัะดะฐั ะธะตะณะพ ะธะท ะณะพััะตะฒะพะน ัะตัะธ..
if cnt==0:
print ("ะะธ ะพะดะธะฝ ะธะท ะฒะฐัะธะฐะฝัะพะฒ ะฐะฒัะพัะธะทะฐัะธะธ ะฝะต ััะฐะฑะพัะฐะป, ะฟะพะปััะฐั IP ะธะท ะณะพััะตะฒะพะน ัะตัะธ..")
ip=func.GetGuestNet(conn)
if ip!="":
cnt=cnt+1;
reply = reply+(("Framed-IP-Address",str(ip)), )
# ะตัะปะธ ัะพะฒัะตะผ ะฒัั ะฟะปะพั
ะพ, ัะพ Reject
if cnt==0:
conf = ( ("Auth-Type", "Reject"), )
else:
#ะตัะปะธ ะฐะฒัะพัะธะทะฐัะธั ััะฟะตัะฝะฐั (ะตััั ัะฐะบะพะน ะฐะฑะพะฝะตะฝั), ัะพ ะทะฐะฟะธัะตะผ ะธััะพัะธั ะฐะฒัะพัะธะทะฐัะธะธ
if username!="":
func.InsertToHistory(conn,username,mac, reply);
conf = ( ("Auth-Type", "Accept"), )
pprint (reply)
conn=None;
return radiusd.RLM_MODULE_OK, reply, conf
def preacct(p):
print ("*** preacct ***")
print (p)
return radiusd.RLM_MODULE_OK
def accounting(p):
print ("*** ะะบะบะฐัะฝัะธะฝะณ ***")
radiusd.radlog(radiusd.L_INFO, '*** radlog call in accounting (0) ***')
print (p)
conn=func.GetConnectionMysql(mysql_host, mysql_username, mysql_password, mysql_base);
param=func.ConvertArrayToNames(p);
pprint(param)
print("ะฃะดะฐะปะธะผ ััะฐััะต ัะตััะธะธ (ะฑะพะปะตะต 20 ะผะธะฝัั ะฝะตั ะฐะบะบะฐัะฝัะธะฝะณะฐ)");
sql="delete from radacct where TIMESTAMPDIFF(minute,acctupdatetime,now())>20"
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
conn.commit()
print("ะะฑะฝะพะฒะธะผ/ะดะพะฑะฐะฒะธะผ ะธะฝัะพัะผะฐัะธั ะพ ัะตััะธะธ")
if (("Acct-Unique-Session-Id" in param) and ("User-Name" in param) and ("Framed-IP-Address" in param)):
sql='insert into radacct (radacctid,acctuniqueid,username,framedipaddress,acctstarttime) values (null,"'+str(param['Acct-Unique-Session-Id'])+'","'+str(param['User-Name'])+'","'+str(param['Framed-IP-Address'])+'",now()) ON DUPLICATE KEY update acctupdatetime=now()'
print(sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql)
conn.commit()
conn=None;
return radiusd.RLM_MODULE_OK
def pre_proxy(p):
print ("*** pre_proxy ***")
print (p)
return radiusd.RLM_MODULE_OK
def post_proxy(p):
print ("*** post_proxy ***")
print (p)
return radiusd.RLM_MODULE_OK
def post_auth(p):
print ("*** post_auth ***")
print (p)
return radiusd.RLM_MODULE_OK
def recv_coa(p):
print ("*** recv_coa ***")
print (p)
return radiusd.RLM_MODULE_OK
def send_coa(p):
print ("*** send_coa ***")
print (p)
return radiusd.RLM_MODULE_OK
def detach():
print ("*** ะะฐ ััะพะผ ะฒัั ะดะตัะธัะตัะบะธ ***")
return radiusd.RLM_MODULE_OK
func.py:
#!/usr/bin/python2.7
# coding=utf-8
import mysql.connector
from mysql.connector import Error
# ะคัะฝะบัะธั ะฒะพะทะฒัะฐัะฐะตั ัะพะตะดะธะฝะตะฝะธะต ั MySQL
def GetConnectionMysql(mysql_host, mysql_username, mysql_password, mysql_base):
try:
conn = mysql.connector.connect(host=mysql_host,database=mysql_base,user=mysql_username,password=mysql_password)
if conn.is_connected(): print('---cะพะตะดะธะฝะตะฝะธะต ั ะะ '+mysql_base+' ัััะฐะฝะพะฒะปะตะฝะพ')
except Error as e:
print("ะัะธะฑะบะฐ: ",e);
exit(1);
return conn
def ConvertArrayToNames(p):
mass={};
for z in p:
mass[z[0]]=z[1]
return mass
# ะคัะฝะบัะธั ะทะฐะฟะธััะฒะฐะตั ะธััะพัะธั ัะพะตะดะธะฝะตะฝะธั ะฟะพ ะธะทะฒะตััะฝัะผ ะดะฐะฝะฝัะผ
def InsertToHistory(conn,username,mac, reply):
print("--ะทะฐะฟะธััะฒะฐั ะดะปั ะธััะพัะธะธ")
repl=ConvertArrayToNames(reply)
if "Framed-IP-Address" in repl:
sql='insert into radpostauth (username,reply,authdate,ip,mac,session_id,comment) values ("'+username+'","Access-Accept",now(),"'+str(repl["Framed-IP-Address"])+'","'+str(mac)+'","","")'
print(sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
conn.commit()
# ะคัะฝะบัะธั ะฒัะดะฐะตั ะฟะพัะปะตะดะฝะธะน ะฟะพ ะดะฐัะต ะฒัะดะฐัะธ IP ะฐะดัะตั ะธะท ะณะพััะตะฒะพะน ัะตัะธ
def GetGuestNet(conn):
ip="";id=0
sql="select * from guestnet order by dt limit 1"
print (sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
row = cursor.fetchone()
while row is not None:
ip=row["ip"]
id=row["id"]
row = cursor.fetchone()
if id>0:
sql="update guestnet set dt=now() where id="+str(id)
print (sql)
cursor = conn.cursor(dictionary=True,buffered=True)
cursor.execute(sql);
conn.commit()
return ip
radiusd.py:
#!/usr/bin/python2.7
# coding=utf-8
# from modules.h
RLM_MODULE_REJECT = 0
RLM_MODULE_FAIL = 1
RLM_MODULE_OK = 2
RLM_MODULE_HANDLED = 3
RLM_MODULE_INVALID = 4
RLM_MODULE_USERLOCK = 5
RLM_MODULE_NOTFOUND = 6
RLM_MODULE_NOOP = 7
RLM_MODULE_UPDATED = 8
RLM_MODULE_NUMCODES = 9
# from log.h
L_AUTH = 2
L_INFO = 3
L_ERR = 4
L_WARN = 5
L_PROXY = 6
L_ACCT = 7
L_DBG = 16
L_DBG_WARN = 17
L_DBG_ERR = 18
L_DBG_WARN_REQ = 19
L_DBG_ERR_REQ = 20
# log function
def radlog(level, msg):
import sys
sys.stdout.write(msg + 'n')
level = level
เดเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดฒเดญเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดฐเตเดคเดฟเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เด เดตเดจเตเดฑเต เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตผ MAC เดตเดฟเดฒเดพเดธเดเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดชเตเดทเตป 82 เดเตเดฎเตเดชเดฟเดจเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดตเดฐเดฟเดเตเดเดพเดฐเดจเต เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, โเด เดคเดฟเดฅเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเตเดตเดฐเต เดเดชเดฏเตเดเดฟเดเตเดเดคเดฟเตฝ เดตเดเตเดเต เดเดฑเตเดฑเดตเตเด เดชเดดเดฏ เดเดชเดฟ เดตเดฟเดฒเดพเดธเด เดเดเตเดเตพ เดจเตฝเดเตเด. โ เดถเตเดเดเดฒ. เดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดพเดชเตโเดคเดฎเดพเดเตเดเดฟเดฏ เดซเตเตพเดกเดฑเดฟเตฝ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต, เด เดเตเดเดจเต เดชเตเดคเตเดคเตบ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดฟเดฏเตเดเตเดค เดจเดฟเดฎเดฟเดทเดเตเดเดณเดฟเตฝ เดเตเดตเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดซเดฏเตฝ เดซเตเดฎเดฟเดฒเตเดเตเดเต เดเตเดฃเตเดเตเดตเดจเตเดจเดพเตฝ เดฎเดคเดฟ:
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ
server default {
listen {
type = auth
ipaddr = *
port = 0
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
listen {
ipaddr = *
port = 0
type = acct
limit {
}
}
listen {
type = auth
port = 0
limit {
max_connections = 1600
lifetime = 0
idle_timeout = 30
}
}
listen {
ipv6addr = ::
port = 0
type = acct
limit {
}
}
authorize {
python
filter_username
preprocess
expiration
logintime
}
authenticate {
Auth-Type PAP {
pap
python
}
Auth-Type CHAP {
chap
python
}
Auth-Type MS-CHAP {
mschap
python
}
eap
}
preacct {
preprocess
acct_unique
suffix
files
}
accounting {
python
exec
attr_filter.accounting_response
}
session {
}
post-auth {
update {
&reply: += &session-state:
}
exec
remove_reply_message_if_eap
Post-Auth-Type REJECT {
attr_filter.access_reject
eap
remove_reply_message_if_eap
}
Post-Auth-Type Challenge {
}
}
pre-proxy {
}
post-proxy {
eap
}
}
เดจเดฎเตเดเตเดเต เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด, เดกเตเดฌเดเต เดฒเตเดเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเตเดจเตเดจเต เดจเตเดเตเดเดพเด:
/usr/local/etc/rc.d/radiusd debug
เดชเดฟเดจเตเดจเต เดเดจเตเดคเตเดฃเตเดเต. FreeRadius เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ, radclient เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดคเดฟเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด เดเดเตเดเดพเดฐเด:
echo "User-Name=4C:5E:0C:2E:7F:15,Agent-Remote-Id=0x9845623a8c98,Agent-Circuit-Id=0x00010006" | radclient -x 127.0.0.1:1812 auth testing123
เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดเตเดเตเดฃเตเดเต:
echo "User-Name=4C:5E:0C:2E:7F:15,Agent-Remote-Id=0x00030f26054a,Agent-Circuit-Id=0x00010002" | radclient -x 127.0.0.1:1813 acct testing123
"เดตเตเดฏเดพเดตเดธเดพเดฏเดฟเด" เดธเตเดเตเดฏเดฟเดฒเดฟเตฝ "เดฎเดพเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต" เด เดคเตเดคเดฐเดฎเตเดฐเต เดธเตเดเตเดฎเตเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดฟเดเดเตเดเตเด เด เดธเดพเดงเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฑเดเตเดเดคเต เดถเตเดฐเดฆเตเดงเตเดฏเดฎเดพเดฏเดคเต:
- MAC เดตเดฟเดฒเดพเดธเด "เดตเตเดฏเดพเด" เดเตเดฏเตเดฏเดพเตป เดธเดพเดงเดฟเดเตเดเตเด. เดตเดฐเดฟเดเตเดเดพเดฐเดจเต เดฎเดฑเตเดฑเตเดฐเดพเดณเตเดเต MAC เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดคเดพเตฝ เดฎเดคเดฟเดฏเดพเดเตเด, เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเด
- เดเดธเตเดฑเตเดฑเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดฏเตเดเตเดคเดฟ เดตเดฟเดฎเตผเดถเดจเดคเตเดคเดฟเดจเต เด เดคเตเดคเดฎเดพเดฃเต. โเดเดฐเตเดชเดเตเดทเต เดเดคเต IP เดตเดฟเดฒเดพเดธเดฎเตเดณเตเดณ เดเตเดฒเดฏเดจเตเดฑเตเดเดณเตเดฃเตเดเต?โ เดเดจเตเดจ เดชเดฐเดฟเดถเตเดงเดจ เดชเตเดฒเตเด เดเดฒเตเดฒ.
เดเดคเต เดเดจเตเดฑเต เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเดฟเตฝ เดชเตเดฐเดคเตเดฏเตเดเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตเดค เดเดฐเต "เดเตเดเตเดเดฟ-เดเดเตเดเตผ เดชเดฐเดฟเดนเดพเดฐเด" เดฎเดพเดคเตเดฐเดฎเดพเดฃเต, เด
เดคเดฟเตฝ เดเตเดเตเดคเดฒเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดเตผเดถเดจเดฎเดพเดฏเดฟ เดตเดฟเดงเดฟเดเตเดเดฐเตเดคเต ๐
เด
เดตเดฒเดเดฌเด: www.habr.com