🧩 Juniper SRX 8-Port 測試環境設定範例:Security Zone、DHCP Pool 與混合介面模式
這篇不是教學文,是一份 Juniper SRX 8 埠測試環境的 show configuration | display set 完整輸出,逐段拆解每一區塊在做什麼。這類多埠混合模式(路由介面 + 交換介面 + 撥接備援)的組態常見於實驗室或臨時測試機,拿真實輸出來讀,比空講語法更容易建立直覺。文末也會指出這份組態裡幾處不建議照抄的設計問題。
root-authentication encrypted-password 雜湊值已整段移除,不予公開。雜湊值理論上仍可能被離線暴力破解,即使不是明碼也不應該公開發布。1️⃣ 系統基本設定
set version 15.1X49-D150.2
set system name-server 8.8.8.8
set system name-server 8.8.4.4
set system services ssh
set system services netconf ssh
set system services web-management https system-generated-certificate
set system syslog archive size 100k
set system syslog archive files 3
set system max-configurations-on-flash 5
set system max-configuration-rollbacks 5
版本是 15.1X49-D150.2,屬於 SRX branch 系列的 Junos 分支。web-management https system-generated-certificate 代表 J-Web 用的是設備自動產生的自簽憑證,瀏覽器一定會跳警告,這在測試機上可以接受,正式環境建議換成內部 CA 簽發的憑證(可參考本站 Windows ADCS 憑證自動註冊 系列)。max-configuration-rollbacks 5 只保留 5 個歷史組態版本,測試機夠用,正式環境視變更頻率可能要調高。
2️⃣ Autoinstallation:無人值守開局
set system autoinstallation traceoptions level verbose
set system autoinstallation traceoptions flag all
set system autoinstallation interfaces ge-0/0/0 bootp
set system autoinstallation interfaces ge-0/0/15 bootp
Autoinstallation 是 Junos 出廠或組態清空後的無人值守開局機制:設備開機時若偵測到指定介面連上 DHCP/BOOTP 伺服器,會嘗試下載組態檔自動套用。這裡把 ge-0/0/0 與 ge-0/0/15 都設成 bootp 來源,代表這台設備原本設計成可以從任一邊插線觸發自動配置,常見於出貨前的批次佈署流程。traceoptions ... flag all 開了完整除錯紀錄,正式量產機通常不會保留這麼詳細的 trace,這也是這份組態帶著「測試機」痕跡的線索之一。
3️⃣ 介面配置總覽:路由 + 交換混合模式
這台設備的 16 個實體埠分成三種角色,整理如下:
| 介面 | 模式 | 角色 | 備註 |
|---|---|---|---|
| ge-0/0/0 ~ ge-0/0/7 | Layer 3(routed port) | 各自獨立 /24 網段的閘道,同時歸屬 trust zone | 每個埠就是一個獨立子網的預設閘道,不是傳統交換器的 access port |
| ge-0/0/8 ~ ge-0/0/14 | Layer 2(ethernet-switching) | 全部歸屬 vlan-trust(vlan-id 3) | 這 7 個埠彼此是同一個 VLAN,走交換而非路由 |
| ge-0/0/15 | Layer 3(family inet,無 IP) | Autoinstallation 來源埠之一 | 只設 bootp,未配置實際 IP |
| fxp0 | Layer 3 | 頻外管理介面 | 192.168.1.1/24,獨立於業務網段 |
| irb.0 | Layer 3 | vlan-trust 的 VLAN 間路由介面 | 192.168.2.1/24,讓 ge-0/0/8~14 這個 VLAN 具備路由能力 |
| dl0(撥接介面) | Dialer | 備援線路(如 3G/4G 或 ISDN 撥接) | 掛在 cl-1/0/0 dialer pool 上 |
這是典型的「路由埠 + 交換埠混合」設計:前 8 個埠各自是不同網段的閘道(像一台多埠路由器),後 7 個埠則是同一個 VLAN 內的交換埠(像傳統交換器),中間用 irb.0 把這個 VLAN 接上路由層。這種混合模式在 SRX 這類「防火牆兼具交換器功能」的設備上很常見,但也代表這台設備同時身兼路由器、交換器、防火牆三種角色,組態複雜度會比單一角色的設備高不少。
# Layer 3 埠範例
set interfaces ge-0/0/0 unit 0 family inet address 192.168.10.254/24
...
set interfaces ge-0/0/7 unit 0 family inet address 192.168.80.254/24
# Layer 2 埠範例
set interfaces ge-0/0/8 unit 0 family ethernet-switching vlan members vlan-trust
...
set interfaces ge-0/0/14 unit 0 family ethernet-switching vlan members vlan-trust
# VLAN 與 IRB 綁定
set vlans vlan-trust vlan-id 3
set vlans vlan-trust l3-interface irb.0
4️⃣ 撥接備援介面(dl0 / cl-1/0/0)
set interfaces cl-1/0/0 dialer-options pool 1 priority 100
set interfaces dl0 unit 0 family inet negotiate-address
set interfaces dl0 unit 0 family inet6 negotiate-address
set interfaces dl0 unit 0 dialer-options pool 1
set interfaces dl0 unit 0 dialer-options always-on
set interfaces dl0 unit 0 dialer-options dial-string 1234
dl0 是 Junos 的邏輯撥接介面(dialer interface),實體撥接載體是 cl-1/0/0(通常對應內建的 3G/4G 模組或序列埠模組)。negotiate-address 代表 IP 位址由撥接對端協商取得,不是固定 IP;always-on 讓這條備援線路保持常開而非按需撥接。dial-string 1234 顯然是佔位測試值,正式環境要換成實際的撥號字串(APN 相關設定或實際電話號碼,依載體模組而定)。這一段在單純的機房測試環境通常用不到,比較像是把出貨模板裡的備援線路設定原封不動保留下來。
5️⃣ Security Zone 與 Policy:測試用的全開放設定
set security zones security-zone trust host-inbound-traffic system-services all
set security zones security-zone trust host-inbound-traffic protocols all
set security zones security-zone trust interfaces ge-0/0/0.0
...
set security zones security-zone trust interfaces ge-0/0/7.0
set security policies from-zone trust to-zone trust policy trust-to-trust match source-address any
set security policies from-zone trust to-zone trust policy trust-to-trust match destination-address any
set security policies from-zone trust to-zone trust policy trust-to-trust match application any
set security policies from-zone trust to-zone trust policy trust-to-trust then permit
⚠️ 這是這份組態裡最需要提醒的部分:trust-to-trust policy 用 any / any / any 全部放行,加上 host-inbound-traffic system-services all 與 protocols all,等於 trust zone 內部完全不設防、且允許所有管理服務從業務介面進來。這種設定只適合封閉的測試網段,拿來當正式環境的起手模板會是嚴重的安全疏漏——會後續加嚴規則的人請務必記得回來收斂,不要讓「測試先求通」的暫時設定變成永久設定。
被定義但未實際套用的 screen 選項
set security screen ids-option untrust-screen icmp ping-death
set security screen ids-option untrust-screen ip source-route-option
set security screen ids-option untrust-screen ip tear-drop
set security screen ids-option untrust-screen tcp syn-flood alarm-threshold 1024
set security screen ids-option untrust-screen tcp syn-flood attack-threshold 200
set security screen ids-option untrust-screen tcp syn-flood source-threshold 1024
set security screen ids-option untrust-screen tcp syn-flood destination-threshold 2048
set security screen ids-option untrust-screen tcp syn-flood timeout 20
set security screen ids-option untrust-screen tcp land
這段定義了一組叫 untrust-screen 的攻擊防護規則(ping of death、IP source route、teardrop、SYN flood 各項門檻、land attack),涵蓋常見的 DoS 攻擊特徵防護。但整份輸出裡沒有任何一行把這個 screen 套用到 zone 上(正常應該要有類似 set security zones security-zone untrust screen untrust-screen 這一行)。這是實務上很容易發生的落差:定義了防護規則、卻忘記實際掛載,commit 不會報錯,但這組規則從頭到尾沒有生效過。檢查 screen 是否真的在保護流量,要看 zone 底下有沒有 screen 這個屬性,而不是只看 security screen 底下有沒有定義。
6️⃣ 路由與交換協定設定
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 passive
set protocols l2-learning global-mode switching
set protocols rstp interface all
只有 ge-0/0/0.0 一個介面掛進 OSPF,且是 passive(通告網段但不建鄰居關係),其餘 7 個路由介面(ge-0/0/1~7)都沒有納入任何動態路由協定,代表對外/對其他設備的路由,這份組態目前是不完整或依賴其他機制(如預設路由,但本輸出中也沒看到 routing-options static 相關設定)。rstp interface all 對所有介面開啟 RSTP,避免 Layer 2 迴圈,這是交換器層級的基本保護,測試環境保留是合理的。
7️⃣ DHCP Local Server 與位址池:網段對應要留意
set system services dhcp-local-server group jdhcp-group interface ge-0/0/0.0
...(ge-0/0/1 ~ ge-0/0/7、fxp0.0、irb.0 全部列入 )
set access address-assignment pool junosDHCPPool1 family inet network 192.168.1.0/24
set access address-assignment pool junosDHCPPool1 family inet dhcp-attributes router 192.168.1.1
set access address-assignment pool junosDHCPPool1 family inet dhcp-attributes propagate-settings ge-0/0/0.0
set access address-assignment pool POOL_NET10 family inet network 192.168.10.0/24
set access address-assignment pool POOL_NET10 family inet range R10 low 192.168.10.100
set access address-assignment pool POOL_NET10 family inet range R10 high 192.168.10.200
⚠️ 這裡有一個組態不一致,值得提醒:junosDHCPPool1 的網段是 192.168.1.0/24、閘道寫 192.168.1.1,但實際上 ge-0/0/0 這個介面的 IP 是 192.168.10.254/24(第 3 節看到的),兩者網段完全對不上。同樣地,junosDHCPPool2 網段是 192.168.2.0/24,也跟任何一個 ge-0/0/x 的實際網段不符(比較接近 irb.0 的 192.168.2.1/24,但 propagate-settings 卻寫 ge-0/0/0.0)。而後面新增的 POOL_NET10 ~ POOL_NET80 才是真正跟 ge-0/0/0 ~ ge-0/0/7 網段對應一致的位址池。
比較合理的解讀是:junosDHCPPool1/junosDHCPPool2 是設備出廠或範本裡原本就帶的預設池,後來使用者又手動加了 POOL_NET10 到 POOL_NET80 這組跟實際網段對應的池,但沒有回頭清掉舊的預設池。這種「新舊設定並存、範圍重疊或衝突」的狀況,在組態範本反覆修改後很常見,實務上建議定期用 show access address-assignment pool 之類的指令盤點一次,把不再對應任何介面的舊池清掉,避免日後排查 DHCP 問題時被兩組互相矛盾的池搞混。
8️⃣ 這份組態不建議照抄的三個地方
| 項目 | 問題 | 建議做法 |
|---|---|---|
| trust-to-trust policy | any/any/any 全放行,搭配 host-inbound all,等同不設防 | 正式環境依實際需求收斂 source/destination/application,並限縮 host-inbound-traffic 到必要服務 |
| untrust-screen 未套用 | 定義了 DoS 防護規則但沒有掛到任何 zone,規則從未生效 | 確認 screen 規則有對應的 zone screen 設定,commit 前用 show 指令核對,不要只看規則有沒有定義 |
| DHCP Pool 網段不一致 | junosDHCPPool1/2 網段與實際介面 IP 對不上,與新增的 POOL_NET* 系列並存造成混亂 | 盤點所有位址池與其對應介面,清除不再使用的舊池,保持一個介面對應一個明確的池 |
📚 延伸閱讀(站內相關文章)
- Juniper EX 交換器基礎管理入門 – 帳號密碼與管理介面的基礎設定,對照本篇被移除的 root-authentication 那一行。
- Juniper VLAN 建立與 Port 模式設定 – 本篇 ge-0/0/8~14 交換埠設定的基礎概念。
- Juniper 靜態路由與基礎動態路由設定 – 本篇 OSPF passive 設定與路由缺口的背景知識。
- Juniper IRB 介面設定實戰 – irb.0 與 vlan-trust 綁定的完整原理。
- Juniper DHCP(Junos OS)設定教學 – dhcp-local-server 與位址池設定的基礎語法。
- FortiGate 防火牆政策與 NAT/Session 設定 – 對照另一家廠牌的 zone/policy 設計方式。
✅ 結論與行動建議
拿一份真實輸出逐段拆解,比空講語法更容易看出「教科書式設定」跟「實際會遇到的組態」之間的落差——這份組態同時示範了正確的混合介面設計,也留下了三個典型的實務痕跡:測試用的全開放 policy、定義了但沒套用的防護規則、以及新舊 DHCP 池並存造成的網段錯亂。如果手上有類似的既有組態要接手維運,建議照第 8 節的順序先盤點:policy 是否過於寬鬆、screen/filter 是否真的掛在對的地方、位址池是否還對應著實際存在的介面,再決定哪些該保留、哪些該清掉,不要假設「commit 沒報錯」就等於「設定如預期生效」。
沒有留言: