# 部署 Vyos VyOS 是一款開源的網路作業系統,它提供了一系列強大的路由、防火牆、VPN 等功能。簡單來說,你可以把它想像成一個軟體路由器或防火牆,安裝在標準的伺服器、虛擬機器或雲端環境中。 ## 開始部署 到此[連結](https://vyos.net/get/nightly-builds/)可以下載 VyOS rolling 版本 ISO 到此[連結](https://cdn.as212934.net/routers/VyOS/)可以下載 VyOS 穩定版本 ISO 以下範例是使用 `vyos-1.4.3-generic-amd64.iso` 這張 iso 安裝 > 注意,每一個不同版本所要執行的指令都會稍微不同 ### 驗證 ISO * 下載公鑰檔 ``` $ curl -L -o vyos-release.minisign.pub \ https://raw.githubusercontent.com/vyos/vyos-build/refs/heads/current/data/live-build-config/includes.chroot/usr/share/vyos/keys/vyos-release.minisign.pub ``` * 使用 minisign 驗證 ISO ``` $ minisign -Vm vyos-1.4.3-generic-amd64.iso -p vyos-release.minisign.pub ``` 螢幕輸出: ``` Signature and comment signature verified Trusted comment: timestamp:1751909904 file:vyos-1.4.3-generic-amd64.iso ``` ## 開始安裝 VyOS  * 預設登入帳號密碼 > Username: vyos > Password: vyos * 執行安裝指令,安裝完畢後重新開機就可以移除 iso ``` vyos@vyos:~$ install image vyos@vyos:~$ reboot ``` * 設定 ssh server,並設定允許密碼登入 ``` $ sudo su $ sudo nano /etc/ssh/sshd_config ...... PasswordAuthentication yes $ systemctl enable --now ssh ``` ## 設定網路 * 查看現在的所有網路介面 ``` $ show interfaces ``` * 設定固定 ip,設定前先執行 `config` ,設定好後再使用 `commit` 保存,`save` 設定機器重啟後設定不會消失 ``` $ config $ set interfaces ethernet eth0 address '10.10.7.4/24' $ set interfaces ethernet eth1 address '172.20.0.1/16' # 設定 default gateway 10.10.7.254 $ set protocols static route 0.0.0.0/0 next-hop 10.10.7.254 # 設定 Name Server (DNS 伺服器) $ set system name-server 8.8.8.8 $ commit $ save ``` ``` $ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 10.10.7.4/24 u/u eth1 172.20.0.1/16 u/u lo 127.0.0.1/8 u/u ::1/128 ``` ``` $ show ip route 0.0.0.0 Routing entry for 0.0.0.0/0 Known via "static", distance 1, metric 0, best Last update 00:01:00 ago * 10.10.7.254, via eth0, weight 1 ``` ## 系統設定 ``` $ set system host-name myvyos $ set system time-zone Asia/Taipei $ commit $ save ``` ## 設定 DHCP Server ``` # 設定從 dhcp 可分配到的 ip $ set service dhcp-server shared-network-name MYLAN subnet 172.20.0.0/16 range 0 start 172.20.128.1 $ set service dhcp-server shared-network-name MYLAN subnet 172.20.0.0/16 range 0 stop 172.20.255.249 $ set service dhcp-server shared-network-name MYLAN subnet 172.20.0.0/16 lease '86400' # 設定從 dhcp 拿到的 gateway $ set service dhcp-server shared-network-name MYLAN subnet 172.20.0.0/16 default-router '172.20.0.1' # 設定從 dhcp 拿到的 nameserver $ set service dhcp-server shared-network-name MYLAN subnet 172.20.0.0/16 name-server 172.20.0.1 $ commit $ save ``` * 檢查 dhcp 設定 ``` $ show service dhcp-server shared-network-name MYLAN { subnet 172.20.0.0/16 { default-router 172.20.0.1 lease 86400 name-server 172.20.0.1 range 0 { start 172.20.128.1 stop 172.20.255.249 } } } [edit] ``` ## 設定 NAT * eth0 是我可以上網的網卡 ``` $ set nat source rule 10 source address 172.20.0.0/16 $ set nat source rule 10 outbound-interface name eth0 $ set nat source rule 10 translation address 'masquerade' $ commit $ save ``` * 檢查設定 ``` $ show nat source rule 10 { outbound-interface { name eth0 } source { address 172.20.0.0/16 } translation { address masquerade } } [edit] ``` ## 設定 DNS ``` # 設定 DNS Forwarder 不啟用快取 $ set service dns forwarding cache-size '0' # 允許 172.20.0.0/16 來源網段的客戶端可以使用 VyOS 這台做 DNS Forwarder $ set service dns forwarding allow-from '172.20.0.0/16' # 指定 VyOS 在哪個 IP 上提供 DNS 服務 $ set service dns forwarding listen-address '172.20.0.1' # 指定上游 DNS 伺服器 $ set service dns forwarding name-server '8.8.8.8' $ commit $ save ``` ``` $ show service dns forwarding { allow-from 172.20.0.0/16 cache-size 0 listen-address 172.20.0.1 name-server 8.8.8.8 { } } [edit] ``` ### 設定反解析 ``` $ sudo nano /run/pdns-recursor/recursor.conf ...... forward-zones=1.20.172.in-addr.arpa=10.10.7.41 $ sudo systemctl restart pdns-recursor ``` ## ssh 關閉密碼驗證 * 關閉密碼登入 ``` $ set service ssh disable-password-authentication $ commit $ save ``` * 設定使用公鑰登入 - `<USERNAME>`: 需要指定來源的使用者 ``` $ set system login user vyos authentication public-keys <USERNAME> type ssh-rsa # key 後面要放的是 public key 去掉 ssh-rsa 以及 使用者名稱的內容(去掉頭跟尾) $ set system login user vyos authentication public-keys <USERNAME> key "c3NoLXJzYSBBQUF...." $ commit $ save ``` * 查看設定 ``` $ show system login user vyos ``` ## 設定 DNAT ``` $ set nat destination rule 100 description "Forward VC Web UI" $ set nat destination rule 100 inbound-interface name eth0 # 您的外網介面 (10.10.7.9 在這張網卡) $ set nat destination rule 100 destination address 10.10.7.4 $ set nat destination rule 100 destination port 443 $ set nat destination rule 100 protocol tcp $ set nat destination rule 100 translation address 172.20.0.10 $ set nat destination rule 100 translation port 443 $ commit $ save ``` ``` $ show nat destination rule 100 { description "Forward VC Web UI" destination { address 10.10.7.4 port 443 } inbound-interface { name eth0 } protocol tcp translation { address 172.20.0.10 port 443 } } [edit] ``` ## 參考 https://docs.vyos.io/en/1.3/installation/install.html#live-installation https://ithelp.ithome.com.tw/m/articles/10267666
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up