|
|
今天给大家推荐一个好用的开源路由操作系统---VyOS,也是我个人非常喜欢的一款软路由器。VyOS 是基于 Debian GNU/Linux 的,提供了和其他诸如Cisco的IOS、Juniper的JUNOS类似的操作方式,配置起来感觉特别的舒服,尤其可以使用compare、rollback之类的命令,方便对比配置和错误回滚,深得我心。. n: z( B' S! J; m0 b# C
( v! S' ~ S/ P, S) Q; H 由于之前用的Mikrotik RouterOS,在使用过程中逐渐发现了一些其性能和稳定性上的弊端,所以逐渐转向了VyOS,听一个资深linux老司机说,他曾经对VyOS进行过单纯的流量压力测试,一台VyOS虚机打到800M的流量没有任何压力。当然RouterOS提供了winbox之类的客户端管理工具,非常容易上手,如果没有特殊需求,完全够用。
5 C+ `) [) q0 f; i+ |/ K i
& g H4 D2 T* ]+ M" }一、简介) h, T5 l: c* [, i
7 z0 d6 P5 }$ u/ u2 {' S
VyOS的前身是Vyatta,是Vyatta系统的社区fork版本;Vyatta公司在2002年提供了开源版本的虚拟路由,后来被博科收购。Vyatta是博通的企业级的产品,linux下知名的开源路由器项目,在其官方的测试中性能甚至超过了cisco 7200系列路由器,可以支持RIP、OSPF、BGP等路由协议以及VPN、NAT、HA等特性。企业路由的所有功能基本都支持,还支持虚拟机。2 E9 I. F2 R4 R: y
4 O+ o0 M+ E W" C) y1 z5 Q2 b
VyOS这个项目的第一个版本释放于2013年,目前还在持续活跃中。相对其他项目——像Juniper管理下的opencontrail,它有完整的使用与安装文档,更提供了API文档供开发者参考(这点也是我喜欢这个操作系统的原因之一)。可以用它来实现软件防火墙、路由器、vpn等功能。
& O+ T* M; i3 j5 [+ H; T% d
$ E2 Y/ M- v, a Q8 F" t二、特性; H6 ?% @0 ^ x1 p5 M
1 U' u4 A) G2 e* G
1、平台支持
5 }3 P: r- Z- w) Z |8 N, n( y0 {7 [3 N% l- a5 s9 I! ~2 C
32-bit x86
# S* _6 e% x1 r5 Y+ j. q5 h. r/ V$ q/ k5 H# g
64-bit x86
( n1 f+ }: _" ?! i
$ i: L9 x* e4 ~0 wKVM (virtio drivers included)$ s: [( x' Y" Q# W: G0 ?5 d6 P
( h3 T/ K: I% L1 R* |1 j/ Y
Xen HVM (including XenServer and EC2)' p2 m0 `8 p/ w3 V) X
+ X. l6 O5 G' V9 L) OVMWare (open-vm-tools included)* w6 L3 a' h5 U4 ^
3 R* s; I6 t% h! F* S" _. pHyper-V (drivers included). i+ z: u. T" J# m7 K0 @
% e A6 x2 n$ x1 R2 Y
VirtualBox (guest additions not included)、1 C$ O- {- Q$ ]* i- K# ?$ P1 G7 \
; N$ v4 P$ I9 h9 V. e(默认情况下支持串口的终端是启用的)
/ l% c- \( e1 v3 U, K# v" @- ~8 G$ D8 W. c
2、路由+ u' ]: c) J2 R" @! ~
( q4 y9 s7 }% e: P; S
BGP (IPv4 and IPv6)
) x- Y( c9 s" C4 s# P c" D+ f+ j
! M& L0 z3 ]/ O7 P: M3 eOSPFv29 \' \( a$ a4 I4 {% m5 `5 M( s
7 _# j1 O2 f* L) H, W
OSPFv3 (incomplete)6 |0 @- `, J) D- v
/ k1 {# m! L K- }
RIP
/ d- R5 L! e6 D3 y5 ^) S- k8 R: y* m0 Y) o; B
RIPng8 e H8 {# g" E" W3 j; Z- u3 \
Y0 E9 { B6 l5 yPolicy-based routing' L/ Y' b, @ J6 F5 H
& b/ c( f N7 K7 Y3 y1 H3、网络接口
7 Y. R9 m6 ^ N3 p6 u2 Q( b E+ k( e) g1 C
Ethernet
$ O7 R$ N- v8 J1 k: {5 b2 P9 Z v/ j9 \, h
802.1q VLAN, QinQ
* k- E* U: Z. d) h' V* y9 L
6 T8 l# f! ~3 D, @$ S1 p5 r! BNIC bonding% @% {2 q0 P5 X0 z; M
* k y) ? ~! v" G
Bridges, STP (no RSTP or other extensions)
# J7 R/ u- S9 N2 S2 {+ s0 r8 ^3 e) K" f: L3 w
Port mirroring and redirection
# @6 [# z# V% x/ i* M, @1 z Y! P8 b
Dummy interfaces (analogous to multiple loopbacks) a, b0 U; @4 O, Q& F0 V z
. e/ d- Q7 G3 F8 [Pseudo-ethernet (aka MAC VLAN)* \( c% B# f2 h+ v8 N$ w8 h! [
5 s- H% W, d p8 q) Y) b802.11 wireless (client and access point)- P5 R+ w. |. n& e; m
& T. \+ E( Y( QSome wireless modems (not very good support)9 y8 @: X& o; W' ?/ s, n! }
6 F. \) g9 K' W0 a4 G6 ^PPPoE/ D K8 x3 K$ |( f7 |0 @
4 ]0 G/ o0 ?0 a& CNote: No support for serial WAN, ISDN, dial-up, DSL cards. Use an external device for that.. f& A7 Y4 y' c9 h
. ?/ w3 L, _" S+ a. Z2 e3 x4、防火墙与NAT+ M5 p' f ~) O, o8 N3 c
Q6 F. V$ b. E8 o. S0 a3 j7 T6 kStateful firewall
7 [: m4 h: F# h% I& K8 X. O% u" N5 m/ b1 Z5 C1 F2 [
Network/address/port groups (IPv4 only for now). [6 d) ]" Q0 T& E& d
0 M) E J, l4 Z6 I8 |& \# dZone-based firewall! P+ Z; P% H$ ?/ y
9 X6 o7 W$ A* l3 Y5 K+ Z* p
Source and destination NAT! j( l3 n- k* }
" o: x2 Q4 w2 O2 P1 z, |' D
5、VPN
' V3 \# \' o$ r) u" q" U; p" A# R2 ^5 G, G$ k @! f
Site-to-site IPsec (with pre-shared key or x.509 authentication)) p, K# r- @# i4 @
$ X4 {1 e6 J' e0 n/ ~VTI (Virtual Tunnel Interfaces); w* [% L9 \" c. ?( y& P) {# E8 P
( v& `& r. y4 I; x1 M0 _7 pOpenVPN (client, server, site-to-site)
6 }4 V: Q: a9 V2 w: a
% w* Y, A: I, _, t7 k! VGRE, IPIP, IPIP6, IP6IP6 tunnels# ~: ^: P* _) E, w5 @0 p% a
1 [$ g, V# H1 Y6 D* O. @5 S/ GVXLAN5 c( e* m V. b8 K9 z; \+ N
2 N7 j- x+ k( |& H( A$ m, k) W: Z
Unmanaged L2TPv3% ^# V' n1 A) G5 e) p2 ]7 a
% X' }5 I% ^* _& Y: M
L2TP/IPsec and PPTP remote access VPN
1 Y5 ~/ c( z) I6 c
; a- Q) o X! ~; DDMVPN (experimental)* T) D9 D& j ?/ n
0 K2 X- j" N! K! }
6、网络服务
! f' ?% M7 }* f5 _/ z# |& `' |8 |8 q+ ?
DHCP server and relay: J/ L. H: ?! Z
& p( T" q n; H: Z& j8 U5 G3 zCaching DNS server
* K! E4 [5 F; W+ ~8 ~
! X" X! Y" ]2 y `: D! ~! NWeb proxy with some URL filtering support (no HTTPS filtering)) r# G: Q! n) L* ?8 X
! _' V# C- y4 ?$ ?, E e; STelnet and SSH for remote management. z" K2 V: h, {7 X4 R) ^( \
* C0 l* B" e8 F, l: G& `' } o: DIGMP proxy
8 a Z+ ^+ | d" G* B2 {, |( A! t/ I+ m* I
QoS support
; J( n: g; w2 s" {9 w$ D; S
4 I5 v5 a0 P: t, g5 K! G8 e1 k7、高可用
$ k, P& B0 e+ F: i* H' E: q7 K+ ~) ~5 E% x, @" Q4 v. }
VRRP (IPv4 only for now)
; r6 _, ]. R8 U# C' \; a& p9 F. V' G5 n
Conntrack sync$ W6 j, T' D/ E* ^' H
7 t; b8 i+ \+ S4 T0 TWAN failover and load balancing
' F# |5 V- s, H4 |' Y6 K U- V! @3 M& t7 E+ I
8、IPV6支持
$ p2 o( r0 i a* d2 c3 z; m8 C( s: S
IPv6 routing (static and dynamic)
; k: R4 u% X% w% z) \
2 O3 C* I- k+ m# dRouter advertisment% e- }- x7 j4 b4 c5 M! B3 R: h7 s3 @; V0 o
# ]* O# j d9 J9 O6 |
DHCPv6 client and server/relay) ~% J+ s% E; p
: P8 o" @: r% Y) [
IPv6 firewall: J: F9 ]* R' q% X* l
9 G( m7 F. y& c0 Z9 F+ H9、系统维护和监控
; R7 d. ?- v: }; W5 `8 Q7 @& J S
, x0 f# \% V/ g$ P* h3 GTask scheduler6 Q- x: Y$ u) Y
9 h* B7 D: L7 Y: D$ u7 S
SNMP
+ { @0 [3 P" R# j' X0 j$ I# S% F3 C3 c3 U
Configuration versioning and remote archiving
7 e+ l, W! S1 b9 c& ~1 v3 ]9 r1 ~& g3 n
Event handling3 p9 F# Y6 ^! f& m9 d9 X4 |6 Z
+ l0 {5 Y/ R1 p9 ]( V+ t3 V
Remote syslog
, ]2 j9 B5 y8 d& _. I. Z
, _) e7 c7 ~* \4 h7 n3 }5 }0 o0 ?: r其他特性详见链接:http://vyos.net/wiki/Feature_list
; @/ T5 h x1 S
- t4 n- w4 y- V& R三、安装# \4 e( b6 Q. t/ O4 i& P; A
! o \ R. p! P8 p4 K' m. Q 官方推荐的配置是,2G磁盘空间,512M内存。其硬件要求很小,2G磁盘完全够用,如果不放心可以增加其内存的配置。比较好的一点,它提供了一种基于镜像的安装方式,这使得在同一机器上存在多个版本的软件成为可能,方便版本升级。- T4 a) ^2 S9 W! x, n9 y$ [: A4 M9 P" {
/ ^2 ]; c* B& g& [+ U1 e/ A
下载地址:http://packages.vyos.net/iso/release/选择你需要的版本,当前最新版本号1.1.7,另外其也提供了OVA的格式,可以直接部署到vmware等平台上。这里说下iso镜像安装方式,wiki上也有详细的安装手册:http://vyos.net/wiki/User_Guide
8 l8 G5 @, B1 a9 T1 N6 C) |% c" ~, x# m) K! g/ I* T7 b
挂盘之后,进系统引导,会看到如下的界面,默认的用户名/密码是:vyos/vyos
: w# L& l7 u5 ~' S4 ?- [+ c. \1 e2 X7 h2 \8 J& e0 l& L+ |. [
wKioL1dp86bDkrWPAADRY-DVpTc631.png-wh_50
) k! \0 ?. p$ q1 {
1 D+ v$ B: q0 o" _ 这里有两种安装方式:install image和install system,推荐使用install image方式:
* E- Y3 s7 b/ W
2 y5 f0 `+ ^3 x. E/ b5 c/ ?运行install image安装:
! L8 y/ [0 \) f* e4 v' \/ _" O: q1 f- u1 `+ ~; Q# I# z
" F; Z: g. N! b! mvyos@vyos:~$ install image
' c9 c9 ^- Z, z" lwKioL1dp9RTQb_pbAACwoOAl1eo773.png-wh_50" N/ e8 s" q1 S$ n: w8 |
5 G- @3 ^; H$ z! p# @4 G# z1 i
安装过程很简单,基本一路回车用默认配置即可,中间需要配置vyos用户的密码,安装成功后用的就是vyos这个用户进行系统配置:
$ n& D! b! t' K( y5 h j' |* \# j: W+ ]
wKiom1dp9avBGYGYAACVzax_taI839.png-wh_50 M) a% b4 |7 a) c5 q2 Y( E
8 h! j* Z7 X! h i7 i8 D提示Setting up grub:OK,即安装成功,之后卸载CDROM,reboot重启之后就可以进行系统配置:9 k! u! R! z3 R: y4 R; N# d
. k9 y" H v5 a7 e. q: HwKiom1dp9avDROwgAACj6Mrpdwg400.png-wh_50) c; h$ p- s7 R
' z* D, r4 F: D8 ~四、简单配置
2 L2 j7 y8 x6 g* s% v" L) r, ], p* T7 ]: g b0 a
VyOS CLI提供两种模式:operational mode和configuration mode.输入configure之后即进入configuration模式,跟路由器和其他linux发行版一样,支持[tab]补齐和?查看帮助信息。配置完之后用compare命令查看修改的配置,commit提交配置,save保存到/config/config.boot配置文件中。
+ h. h8 _; j6 h+ }4 {* W3 E/ o# K0 B+ i, U
show命令:
! _* ], R6 O- u8 f5 A
* P; Z- H* V4 ~3 x; W6 \, a/ G, v. W
#查看全部配置
# @! G& N/ f( A, [# T- W' I8 ~vyos@vyos# show configuration
/ S7 V2 Z3 K" W6 ~1 v7 ^#匹配某个配置字段,类似思科交换机上的include或者linux上的grep
) z3 T, Z- | B6 Q2 a B2 ?/ ]' ^' Gvyos@vyos:~$ show configuration commands | match eth1
" r1 l; F, \' K* z9 [set interfaces ethernet eth1 address '172.16.0.1/24'& N. ?8 _+ M( V, n
set interfaces ethernet eth1 description 'To Private Net'. j1 W$ I, A6 x& z+ p, u" n
set interfaces ethernet eth1 hw-id '00:xx:xx:b9:xx:xx3 q& X3 a0 N$ K
简单NAT配置实例:
5 b& N4 Y4 @ z9 ~9 S: \0 s
$ Y) w# ^& E; F0 r: ]0 O0 ^1 A U+ D$ @; @9 i
set interfaces ethernet eth0 address 'xx.xx.xx.34/xx' #配置出网ip地址4 a6 a0 D( ?- y4 d0 h
set interfaces ethernet eth0 description 'To Internet'
, G/ F( I1 p& ~' c* N' V& [set protocols static route 0.0.0.0/0 next-hop 'xx.xx.xx.33' #配置全局静态路由,33为网关7 T$ u% m1 Z2 l2 g
set service ssh listen-address 'xx.xx.xx.34' #设置ssh监听的本地地址9 `, |# O! r. [, D7 j" g8 i7 r
set service ssh port '2222' # 更改vyos的ssh端口号
% s% k# P; |; k6 N( }set nat source rule 100 description 'NAT Outside' #配置NAT source规则,内网映射出网% |( ?$ E9 b7 d+ V/ ?# x7 Y% l2 p
set nat source rule 100 outbound-interface 'eth0'
% W' Z) e8 a8 [! d0 i9 L$ m# ?1 m Z4 Vset nat source rule 100 source address '192.168.0.0/24') R. [- ^4 N2 I; ^
set nat source rule 100 translation address 'xx.xx.xx.34'
: A3 {- j' r8 q' Iset nat destination rule 101 description 'To agent port 5045' #配置NAT dest规则,映射到内网
$ v( T8 x0 n/ j, rset nat destination rule 101 destination address 'xx.xx.xx.34' 3 q' l& Z& @. v! Y( g. x1 ], H
set nat destination rule 101 destination port '5045'
: E' P) w, l4 k% N& V% F0 W7 u2 g! Jset nat destination rule 101 inbound-interface 'eth0'
; {" ^* g3 J5 zset nat destination rule 101 protocol 'tcp'
% A7 b# `2 E6 b$ ^* Z( s" Xset nat destination rule 101 translation address '192.168.0.2'- k, |) x1 C6 L
set nat destination rule 101 translation port '5045'/ N% T! g" g( M8 [, ^0 v
配置完成之后,报存配置;
$ Y8 P- u+ Z( `. Q+ A& ~3 t( z$ ]( s* I7 g, Z2 L2 w: Q
0 i; I* E V* q c& @0 wvyos@vyos# compare #查看更改的配置" W* Z3 |0 k. U3 r: z5 ] { x7 W
vyos@vyos# commit #提交配置
7 R) r- n1 Y" p6 l: Q3 Z( W; Tvyos@vyos#save #保存到文件,重启不失效
9 m) f5 \( n& C' }- ~vyos@vyos# exit #退出& E8 Z# A2 k* l3 d+ s
vyos@vyos# rollback 1 #如果发现错误,rollback回滚到指定时间的配置 |
|