---
# System prepended metadata

title: 計網實驗 Lab 1

---

# 計網實驗 Lab 1

縮短網址：https://reurl.cc/OGN5mg

## 進度
- [ 〇 ] 電腦 B 能夠透過 DHCP 伺服器 (A) 取得 IP 位址
- [ 〇 ] 電腦 B 能夠透過 NAT 連結外部網路
- [ 　 ] 用 Wireshark 抓封包（不確定要怎麼抓/抓甚麼）
- 正常運作指定程式：
    1. [ 〇 ] DNS
    2. [ 〇 ] HTTP
    3. [ 〇 ] FTP
    4. [ 　 ] Telnet（理應可以，但還沒測試）
    5. [ 〇 ] ICMP
    6. [ 　 ] SSH（理應可以，但還沒測試）
<!--     6. [ ] Skype（還不確定具體要開放的 port 的範圍）
        - 主要是 443 埠 HTTPS 也在用，不確定開了會不會有問題 -->

## 檔案
- [Ubuntu VMs](https://drive.google.com/drive/folders/1tWPvZQxwVu_yQVFi9ClicGEaC4BzCZsD)
- [Shell Script](https://gist.github.com/kinoras/e2e7ae5dfe3b113e733fc08066b25ab7)（不確定可否work）

## 指定程式測試
|程式|Protocol|Port|測試工具|
|-|-|-|-|
|DNS|TCP/UDP|53|`nslookup`|
|HTTP|TCP|80, 8080|`wget`|
|FTP|TCP|20:21|Filezilla ([範例伺服器](https://www.sftp.net/public-online-ftp-servers))|
|Telnet|TCP|23, 2323|在工作站開一個然後連上去？|
|ICMP|ICMP|N/A|`ping`|
|SSH|ICMP|22|`ssh`|
<!-- |Skype|TCP/UDP|[官方說明](https://support.skype.com/en/faq/FA148/which-ports-need-to-be-open-to-use-skype-on-desktop)|Skype ([安裝方法](https://www.dell.com/support/kbdoc/en-us/000131644/how-do-i-install-the-latest-version-of-skype-on-my-ubuntu-system))| -->

## DHCP/NAT 設定步驟
1.  更改 grub 設定（VM A）
    - `sudo vim /etc/default/grub`
        - `GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"`
    - `sudo update-grub`
    - 重新開機
2.  安裝並設定 DHCP（VM A）
    - `sudo apt-get install isc-dhcp-server`
        - 可能需要 `sudo apt-get update`
    - `sudo vim /etc/default/isc-dhcp-server`
        - `INTERFACES="eth1"`
    - `sudo vim /etc/dhcp/dhcpd.conf`
        - ```
            option domain-name "d98922029.stu";
            option domain-name-servers 140.112.254.4, 140.112.17.1;
            default-lease-time 6000;
            max-lease-time 72000;
            subnet 192.168.100.0 netmask 255.255.255.0{
                   range 192.168.100.20 192.168.100.100;
                   option routers 192.168.100.254;
                   option broadcast-address 192.168.100.255;
            }
            ```
3.  按投影片第 27 至 29 頁變更 VM A 及 VM B 網卡設定。
    設定 VM 時，注意兩張網路卡的分別（可用 MAC 位址分辨）：
    |網卡|VirtualBox 設定|Ubuntu 網路設定|方向|
    |-|-|-|-|
    |eth0|NAT|DHCP|對外|
    |eth1|內部網路＋允許VM |Manual|對內|
    
4.  設定 NAT（VM A）
    - `sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE`
    - `sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80`
    - `echo "1" > /proc/sys/net/ipv4/ip_forward`
        - 遇權限問題可改用 `sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"`

5.  啟動 DHCP Server（VM A）
    - 啟動：`sudo /etc/init.d/isc-dhcp-server start`
        - 每次開機都要手動啟動
    - 停止：`sudo /etc/init.d/isc-dhcp-server stop`
    - 查看狀態：`sudo /etc/init.d/isc-dhcp-server status`