---
# System prepended metadata

title: 計網實驗 Lab 2

---

# 計網實驗 Lab 2

本頁連結：https://hackmd.io/@kinoRAS/cnl2
常用連結：[投影片](https://www.pcs.csie.ntu.edu.tw/views/courses/cnl/2024/2024_Lab2_WLAN(exeriment).pdf), [PHP](https://www.pcs.csie.ntu.edu.tw/views/courses/cnl/2024/hotspotlogin.php.txt)


## 設定步驟
### A. 安裝 LAMP Server 及 phpMyAdmin
1.  安裝套件
    - `sudo apt-get install tasksel`
    - `sudo tasksel install lamp-server`
    - `sudo apt-get install phpmyadmin`
    - 建議所有密碼皆設為 123456
2.  複製及修改 phpMyAdmin 設定檔
    - `sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf.d`
    - `sudo gedit /etc/apache2/apache2.conf`
        - 在最後一行加入 `Include /etc/phpmyadmin/apache.conf`
3.  重啟 Apache Server
    - `sudo /etc/init.d/apache2 restart`
4.  測試 phpMyAdmin
    - http://localhost/phpmyadmin
5.  啟用 Apache 的 SSL 功能
    - `sudo a2enmod ssl`
	- `sudo a2ensite default-ssl`
	- `sudo /etc/init.d/apache2 restart`

### B. 安裝 FreeRADIUS
1.  安裝套件
    - `sudo apt-get install freeradius`
    - `sudo apt-get install freeradius-mysql`
2.  重啟 FreeRADIUS
    - `sudo /etc/init.d/freeradius restart`
3.  修正 localhost hotsname 混淆問題
    - `sudo gedit /etc/hosts`
    - 註解 `::1 localhost ip6-localhost ip6-loopback` 一行

### C. 建立 FreeRADIUS 資料庫
1.  新增 RADIUS 資料庫
    - `mysql –u root –p`
        -  `CREATE DATABASE radius;`
2.  匯入 RADIUS 資料庫架構
    - `sudo su root`
    - `cd /etc/freeradius/sql/mysql/`
    - `mysql -u root -p radius < ippool.sql`
    - `mysql -u root -p radius < schema.sql`
    - `mysql -u root -p radius < nas.sql`
    - `mysql -u root -p radius < admin.sql`
3.  設定使用者 radius 之權限
    - 登入 phpMyAdmin 並選取資料庫 radius
    - 在導覽列選擇 More > Privileges
    - 編輯使用者 radius 的權限，選擇 Check All 並儲存
    - 另外，要手動重設使用者 radius 的密碼
4.  設定使用者 radius 之密碼

### D. 修改 FreeRADIUS 設定
1.  `gedit /etc/freeradius/sites-enabled/default`
    - 取消以下各句之下一行之註解
        - `# See "Authorization Queries" in sql.conf`
        - `# See "Accounting queries" in sql.conf`
        - `# See "Simultaneous Use Checking Queries" in sql.conf`
        - `# See "Authentication Logging Queries" in sql.conf`
2.  `gedit /etc/freeradius/radiusd.conf`
    - `# Port on which to listen.` 後的 `port` 改為 `1812`
    - `This second "listen" section` 後的 `port` 改為 `1813`
3.  `gedit /etc/freeradius/radiusd.conf`
    - 取消 `$INCLUDE sql.conf` 之註解
    - `stripped names = no` 改為 `stripped names = yes`
    - `auth = no` 改為 `auth = yes`
    - `auth_badpass = no` 改為 `auth_badpass = yes`
4.  `gedit /etc/freeradius/sql.conf`
    - `# Connection info:` 後
        - `login = "radius"`
        - `password = "123456"`
    - 取消 `readclients = yes` 之註解
5.  `gedit /etc/freeradius/clients.conf`
    - 新增
        ```
        client 192.168.1.0/24{
            secret = [key here ...]
        }
        ```

### E. phpMyadmin 內設定
1.  新增使用者 "radius"
    - 進入首頁，在導覽列選擇 User Accounts > Add user account
    - 按照以下設定新增使用者
        - User name = radius
        - Host name = Any host 及 %
        - 勾選 Create database with same name and grant all privileges
        - 勾選 Global privileges 的 Check all
2.  加入資料
    - 選取資料庫 radius，在導覽列選擇 SQL
    - 加入群組資料
        - `INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('user','Auth-Type',':=','CHAP');`
        - `INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('user','Service-Type',':=','Framed-User');`
    - 加入測試帳號 "ta"
        - `INSERT INTO radcheck (username,attribute,op,value) VALUES ('ta', 'Cleartext-Password',':=','tatest');
    - 把帳號加入群組
        - `INSERT INTO radusergroup (username,groupname) VALUES ('ta','user');`
3.  加入更多資料
    - `INSERT INTO radcheck (username,attribute,op,value) VALUES ('帳號','User-Password',':=','密碼');`
    - `INSERT INTO radusergroup (username,groupname) VALUES ('帳號','user');`
4.  測試 FreeRADIUS
    - `radtest ta tatest localhost 1 testing123`
    - 若成功會顯示 request accept

### F. FreeRADIUS
1.  開啟/停止/重啟
    - `sudo /etc/init.d/freeradius start`
    - `sudo /etc/init.d/freeradius stop`
    - `sudo /etc/init.d/freeradius restart`
2.  Debug 模式
    - `sudo /etc/init.d/freeradius stop`
    - `sudo freeradius -X`
3.  Log 檢視
    - `sudo tail -n 30 /var/log/freeradius/radius.log`
    - `sudo tail -n 30 /var/log/freeradius/radius.log | grep Error`

### G. AP 設定
依投影片指示進行。