Juniper SRX 在 kvm 中的部署方法與測(cè)試
說(shuō)明
虛擬化的 SRX 支持 dns 代理、ip in ip tunnel、ipsec VPN 等功能,在要求不高的情況下,可以部署在虛擬化環(huán)境中使用。
本文介紹如何在 kvm 中部署,并且測(cè)試了部分功能。
主要涉及知識(shí)點(diǎn) openvswitch、kvm、junos 的基本配置
環(huán)境部署
拓?fù)?/strong>
拓?fù)涿枋?/strong>
- 需要一臺(tái) Linux 主機(jī),安裝好 kvm 和 openvswitch(以下簡(jiǎn)稱(chēng) ovs)
- 兩臺(tái) srx 部署在 kvm 中,每臺(tái)使用 2 個(gè)端口連接 ovs
- 添加兩個(gè) namespace,使用 iperf3 測(cè)試穩(wěn)定性
kvm 部署 srx
ovs 與 kvm 網(wǎng)絡(luò)的配置
1.添加 ovs 網(wǎng)橋
- ovs-vsctl add-br example-ovsbr0
定義 kvm 網(wǎng)絡(luò)
編輯 xml 文件如下
- vim example-ovsbr0.xml
- <network>
- <name>example-ovsbr0</name>
- <forward mode='bridge'/>
- <bridge name='example-ovsbr0'/>
- <virtualport type='openvswitch'/>
- <portgroup name='VLAN11'>
- <vlan>¡
- <tag id='11'/>
- </vlan>
- </portgroup>
- <portgroup name='VLAN12'>
- <vlan>
- <tag id='12'/>
- </vlan>
- </portgroup>
- <portgroup name='VLAN13'>
- <vlan>
- <tag id='13'/>
- </vlan>
- </portgroup>
- <portgroup name='VLAN14'>
- <vlan>
- <tag id='14'/>
- </vlan>
- </portgroup>
- </network>
3.創(chuàng)建 kvm 網(wǎng)絡(luò)
- virsh net-define example-ovsbr0.xml
4.啟動(dòng)網(wǎng)絡(luò)并設(shè)置為自動(dòng)啟動(dòng)
- virsh net-start example-ovsbr0
- virsh net-autostart example-ovsbr0
注意事項(xiàng)
- 將網(wǎng)卡類(lèi)型改為 e1000,否則會(huì)不識(shí)別
- 需要添加 3 個(gè)網(wǎng)卡,分別對(duì)應(yīng) srx 的端口 ge0/0/0、ge0/0/1、ge0/0/2,其中 ge0/0/0 不使用
- 命令如下所示
virt-install 命令
- virt-install \
- --virt-type=kvm \
- --name=srx-A \
- --vcpus=2 \
- --memory=2048 \
- --network=network=example-ovsbr0,portgroup=VLAN11,model=e1000 \
- --network=network=example-ovsbr0,portgroup=VLAN11,model=e1000 \
- --network=network=example-ovsbr0,portgroup=VLAN13,model=e1000 \
- --disk path=/data/example/vmfiles/srx-A.qcow2,size=40,format=qcow2 \
- --import \
- --graphics none \
- --force
- # 另外一臺(tái)
- virt-install \
- --virt-type=kvm \
- --name=srx-B \
- --vcpus=2 \
- --memory=2048 \
- --network=network=example-ovsbr0,portgroup=VLAN12,model=e1000 \
- --network=network=example-ovsbr0,portgroup=VLAN12,model=e1000 \
- --network=network=example-ovsbr0,portgroup=VLAN14,model=e1000 \
- --disk path=/data/example/vmfiles/srx-B.qcow2,size=40,format=qcow2 \
- --import \
- --graphics none \
- --force
srx 配置
為了方便,我這里將所有使用到的網(wǎng)口都放在了 trust 區(qū)域
srx-A
- # 基本信息配置
- set system services ssh
- set routing-options static route 0.0.0.0/0 next-hop 172.19.11.254
- set interfaces ge-0/0/1 unit 0 family inet address 172.19.11.100/24
- set system root-authentication plain-text-password # 這里會(huì)提示設(shè)置兩遍密碼
- set routing-options static route 0.0.0.0/0 next-hop 172.19.11.254
- # dns proxy 配置
- set system services dns forwarders 114.114.114.114
- set system services dns dns-proxy interface ge-0/0/1.0
- set system services dns dns-proxy cache test.houm01.cn inet 99.99.99.99 # 本地DNS A 記錄配置
- # ip ip tunnel 配置
- set interfaces ip-0/0/0 unit 0 tunnel source 172.19.11.100
- set interfaces ip-0/0/0 unit 0 tunnel destination 172.19.12.100
- set interfaces ip-0/0/0 unit 0 family inet address 1.1.1.1/30
- set routing-options static route 172.19.14.0/24 next-hop ip-0/0/0.0
- # 接口區(qū)域配置
- set security zones security-zone trust interfaces ge-0/0/1.0 host-inbound-traffic system-services all
- set security zones security-zone trust interfaces ip-0/0/0.0 host-inbound-traffic system-services all
- set security zones security-zone trust interfaces ge-0/0/0.0 host-inbound-traffic system-services all
- # 提交配置
- commit
srx-B
- # 基本信息配置
- set system services ssh
- set routing-options static route 0.0.0.0/0 next-hop 172.19.12.254
- set interfaces ge-0/0/1 unit 0 family inet address 172.19.12.100/24
- set system root-authentication plain-text-password # 這里會(huì)提示設(shè)置兩遍密碼
- set routing-options static route 0.0.0.0/0 next-hop 172.19.12.254
- # ip ip tunnel 配置
- set interfaces ip-0/0/0 unit 0 tunnel source 172.19.12.100
- set interfaces ip-0/0/0 unit 0 tunnel destination 172.19.11.100
- set interfaces ip-0/0/0 unit 0 family inet address 1.1.1.2/30
- set routing-options static route 172.19.14.0/24 next-hop ip-0/0/0.0
- # 接口區(qū)域配置
- set security zones security-zone trust interfaces ge-0/0/1.0 host-inbound-traffic system-services all
- set security zones security-zone trust interfaces ip-0/0/0.0 host-inbound-traffic system-services all
- set security zones security-zone trust interfaces ge-0/0/0.0 host-inbound-traffic system-services all
- # 提交配置
- commit
namespace 配置
- # 添加 ns
- ip netns add ns1
- ip netns add ns2
- # 添加兩條網(wǎng)線
- # 以下命令會(huì)創(chuàng)建兩對(duì),分別是 veth0~veth1、veth2~veth3
- ip link add type veth
- ip link add type veth
- # 將兩條網(wǎng)線的兩端添加到 namespace 中
- ip link set veth1 netns ns1
- ip link set veth3 netns ns2
- # 配置地址
- ip netns exec ns1 ip addr add 172.19.13.200/24 dev veth1
- ip netns exec ns2 ip addr add 172.19.14.200/24 dev veth3
- # up 端口
- ip netns exec ns1 ip link set dev veth1 up
- ip netns exec ns2 ip link set dev veth3 up
- # 添加默認(rèn)路由
- # 下一跳指向 srx 的內(nèi)網(wǎng)口
- ip netns exec ns1 ip route add default via 172.19.13.100
- ip netns exec ns2 ip route add default via 172.19.14.100
功能測(cè)試
DNS 解析測(cè)試
在其他主機(jī)使用 dig 命令測(cè)試
- dig www.baidu.com @172.19.11.100
- ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.3 <<>> www.baidu.com @172.19.11.100
- ;; global options: +cmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40389
- ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 13, ADDITIONAL: 1
- ;; OPT PSEUDOSECTION:
- ; EDNS: version: 0, flags:; udp: 4096
- ;; QUESTION SECTION:
- ;www.baidu.com.INA
- ;; ANSWER SECTION:
- www.baidu.com.1038INCNAMEwww.a.shifen.com.
- www.a.shifen.com.146INA163.177.151.110
- www.a.shifen.com.146INA163.177.151.109
- ;; AUTHORITY SECTION:
- .2276INNSj.root-servers.net.
- .2276INNSf.root-servers.net.
- .2276INNSc.root-servers.net.
- .2276INNSk.root-servers.net.
- .2276INNSl.root-servers.net.
- .2276INNSg.root-servers.net.
- .2276INNSm.root-servers.net.
- .2276INNSe.root-servers.net.
- .2276INNSd.root-servers.net.
- .2276INNSi.root-servers.net.
- .2276INNSa.root-servers.net.
- .2276INNSh.root-servers.net.
- .2276INNSb.root-servers.net.
- ;; Query time: 55 msec
- ;; SERVER: 172.19.11.100#53(172.19.11.100)
- ;; WHEN: Sun May 17 16:56:14 CST 2020
- ;; MSG SIZE rcvd: 312
- --------------------------------
- dig test.houm01.cn @172.19.11.100
- ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.3 <<>> test.houm01.cn @172.19.11.100
- ;; global options: +cmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49291
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
- ;; OPT PSEUDOSECTION:
- ; EDNS: version: 0, flags:; udp: 4096
- ;; QUESTION SECTION:
- ;test.houm01.cn.INA
- ;; ANSWER SECTION:
- test.houm01.cn.86400INA99.99.99.99
- ;; AUTHORITY SECTION:
- test.houm01.cn.86400INNStest.houm01.cn.
- ;; Query time: 8 msec
- ;; SERVER: 172.19.11.100#53(172.19.11.100)
- ;; WHEN: Sun May 17 16:57:01 CST 2020
- ;; MSG SIZE rcvd: 73
可以看到,解析公網(wǎng)域名和自定義的域名都沒(méi)有問(wèn)題
ip ip tunnel 測(cè)試
從 ns1 ping ns2
- ip netns exec ns1 ping 172.19.14.200
- PING 172.19.14.200 (172.19.14.200) 56(84) bytes of data.
- 64 bytes from 172.19.14.200: icmp_seq=1 ttl=62 time=66.5 ms
- 64 bytes from 172.19.14.200: icmp_seq=2 ttl=62 time=51.7 ms
- ^C
- --- 172.19.14.200 ping statistics ---
- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms
- rtt min/avg/max/mdev = 51.769/59.155/66.542/7.390 ms
性能測(cè)試
iperf 測(cè)試
執(zhí)行如下命令測(cè)試
- # 將 ns1 作為服務(wù)器端偵聽(tīng)
- ip netns exec ns1 iperf3 -s
- # 將 ns2 作為客戶端,測(cè)試半小時(shí)
- ip netns exec ns2 iperf3 -c 172.19.13.100 -t 1800
參考資料
http://www.iwan.wiki/Virtual_router_instances_Juniper_vSRX,_Juniper_vMX_and_GNS3
https://kb.juniper.net/InfoCenter/index?page=content&id=KB23986