
前言
會開始本次的折騰主要原因是我的 Homelab 中,擔任主要 Router 的工控主機效能好像很不怎麼樣,想在家裡做 Vlan Routing 呀或是 實踐 DMZ 管控呀之類的,都會有高機率看到它 CPU 突然飆高甚至死機。
在好幾次變磚頭的折騰後,我決定 Let it be.
讓它專注做好 Router 的角色,把內網的 L3 Routing 的工作交給我的 NCU 主機。
極度折騰的軟路由選擇
最一開始的想法很單純,想說單純把 PVE 上的 VM 網路跟平常使用的網路分開來,做簡單的 Vlan Routing 就好。
原以為可以順便學習一下 PVE 的 SDN 功能,但實踐上沒想像中的簡單,所以還是決定架設一台虛擬的 Router 最為直觀。
選擇 VyOS 也沒啥特別的理由,就只是聽說它是 Cisco Like CLI,設定邏輯應該比較好掌握。
前置作業
VyOS 是 Open-Source 的開源系統,但對免費用戶僅提供 Rolling Release 版本(或稱為 nightly build 也就是每日都會更新的意思非長期穩定版)。
不過使用上好像不會因此而有不穩定的狀態,所以就看個人取向選個最新的版本吧。
VM配置
每一次看網路教學文都不會看到架一個服務具體來說到底要多少資源 嘖
但 VyOS 的官網上有說明最低配置需求:
- 最小配置需求
- 64-bit CPU
- 512 MB of RAM
- 2 GB Disk space
- 建議配置需求
- 1024 MiB RAM
- 4 GB Storage space
資源需求很低,對於 Homelab 來說用最低配置就行了,如果有其他配置要求,可以去官網查看其他建議值。
安裝
使用下載的 ISO 檔開機後,會出現 Boot Menu,並在系統 loading 後出現登入畫面

預設的登入帳號 vyos 密碼 vyos
登入後輸入 install image 開始安裝系統,按照提示輸入對應選項即可完成安裝。安裝完成後,重新啟動即可

配置
VyOS 的配置指令和 Cisco 類似 (嚴格來說是跟 Nexus類似,現在的 Cisco IOS越來越詭異了) ,一樣是要先進入 configure 模式,以 set 和 delete 來做新增或移除設定。針對於服務或是群組設定則是用 edit 進入下一層編輯,top 指令則為回到頂層。
按 TAB 可以補全指令,按 ? 可以顯示可選的指令有哪些,當設定結束後需要先 commit 再執行 save 儲存設定。
基本系統設定
1
2
3
4
5
6
|
# 設定 hostname
set system host-name <hostname>
# 設定系統時區
set system time-zone Asia/Taipei
# 建立新的使用者
set system login user <user> authentication plaintext-password <password>
|
IP設定
VyOS 的 Interface 命名方式為 eth0 eth1 eth2 … 以此類推,在 proxmox 的 VM 上會按照硬體選項的順序對應之,但為了避免有誤,建議先查看 ip add 確定網卡的 MAC 跟預想的是不是一致。
1
2
3
4
5
6
7
8
|
# 設定 wan 口網路 可為 DHCP 或 靜態IP
set interface ethernet <wan port> address <dhcp / static ip>
# 設定 lan 口網路 這邊設的就是內網連到 VyOS的IP 也就是內網的Gateway
set interface ethernet <lan port> address <dhcp / static ip>
# 設定 default gateway 如果wan口配置 dhcp 則不用設這項
set protocols static route 0.0.0.0/0 next-hop 192.168.0.1 #中華電信小烏龜預設IP
commit #啟用設定
save #保存設定
|
一些服務設定
SSH
1
2
3
|
set service ssh port 22
# set service ssh acl permit '10.0.0.0/8' # 配置 ssh 的 ACL
# 看自己要不要折騰 還有好多可選配置
|
DHCP
這邊剛好可以說明一下 edit 指令的用法
在不用 edit 時配置 DHCP
1
2
3
4
5
6
7
8
9
|
configure
set service dhcp-server shared-network-name eth1 authoritative # 設定為主要DHCP SERVER
set service dhcp-server shared-network-name eth1 subnet 192.168.2.0/24 default-router 192.168.2.1 # 設定 DHCP 配發預設GW
set service dhcp-server shared-network-name eth1 subnet 192.168.2.0/24 lease 86400 # 設定DHCP lease time
set service dhcp-server shared-network-name eth1 subnet 192.168.2.0/24 name-server 8.8.8.8 # 設定 DHCP 配發DNS
set service dhcp-server shared-network-name eth1 subnet 192.168.2.0/24 range 0 start 192.168.2.2 # DHCP 配發IP範圍 range指的是可配發的IP區段 從0開始
set service dhcp-server shared-network-name eth1 subnet 192.168.2.0/24 range 0 stop 192.168.2.10 # 區段IP 最後位置
commit
save
|
用 edit 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 進入dhcp設定層級
edit service dhcp-server shared-network-name <text> subnet <192.168.2.0/24>
# 設定gateway
set option default-router <192.168.2.1>
# 設定dns
set option name-server 1.1.1.1
# dhcp租約時間(秒)
set lease 86400
# 設定dhcp ip pool
set range 0 start 192.168.2.2
set range 0 stop 192.168.2.10
# subnet id ,不重複即可
set subnet-id 1
|
看起來 edit 的使用情境類似於 物件導向 的設定,不過選擇哪個就見仁見智了
例如 Cisco ACL 教學時都推薦用 extend 作規則命名,但實務上我有經手過的客戶都還是用 standard ACL 居多,所以不太會動的服務設定就依個人喜好設定吧。
NAT
SNAT
1
2
3
4
5
6
|
configure
set nat source rule 100 outbound-interface eth0 # 設定 eth0 為NAT的出口端
set nat source rule 100 source address 192.168.2.0/24 # 設定內網網段
set nat source rule 100 translation address masquerade # 將內網網段轉譯成NAT出口端IP
commit
save
|
DNAT
1
2
3
4
5
6
7
8
9
|
configure
set nat destination rule 100 inbound-interface eth0 # 外網流量進入口
set nat destination rule 100 destination address 192.168.1.2 # 從 eth0 接口訪問 192.168.1.2
set nat destination rule 100 destination port 80 # 訪問目的端port 80
set nat destination rule 100 protocol tcp # 設定使用的傳輸層協定 TCP
set nat destination rule 100 translation address 192.168.2.2 # 流量映射給192.168.2.2
set nat destination rule 100 translation port 8080 # 映射port 轉為 192.168.2.2的 8080 port
commit
save
|
總結
VyOS 是一種軟路由的解決方案,還具有許多 Router 及 Firewall 的功能。但在我的情境裡只是當作 L3 Routing的角色,所以相關筆記就先暫時紀錄到這裡吧。
參考內容 感謝網路上的各路大神
VyOS快速設定
【Vyos-开源篇-2】- vyos软路由基本配置
安装和初始化 VyOS 虚拟机
Day 4 - 部署 Home Lab 網路 - 安裝路由器