乐趣区

关于服务器:二手MicroServer-Gen8折腾记-配置-RouterOS-软路由

我之前宽带始终都是光猫拨号,电脑和 NAS 直连光猫,光猫下挂个二级无线路由器来给其余设施联网,但我早就对这个拓扑不爽了,次要起因是本人花大钱买的 AC86U 派不上用场,只能干点边缘的杂活,而且搞两套局域网怎么看都挺恶心的。之前也试过把路由器改成 AP 模式,让所有设施都直连光猫,然而万恶的电信光猫限度了设施数,只有前 5 台机器能上网,其它的机器尽管能拿到地址,然而上网必然超时。那当初既然有了台服务器,那罗唆装个软路由。

软路由零碎我打算玩玩 RouterOS,毕竟iKuai 据说过没用过,据说还出过劫持流量这种问题,不敢用也不想用;OpenWRT以前玩过,没啥新鲜感,而RouterOS,之前装着玩的时候就感觉倍低档,早就想搞搞它玩玩了。

获取光猫中的配置

我找装维徒弟说要玩猫棒,须要进后盾看参数,徒弟就把明码查给我了。

用超级明码登录光猫后盾,把 LOID、PPPoE 的用户名和明码(明码须要 base64 解码能力失去实在的明码)、IPv6 前缀长度记在一个文档里备查。

筹备猫棒

因为我懒得找运营商的装维徒弟给我改桥接(之前沟通过,徒弟说要先换光猫,新光猫又得等),也思考到留着原来的光猫配置不变的话,在我折腾翻车的时候也不须要再找装维徒弟改回路由模式,间接把光纤接回去就能复原网络,所以我间接在淘宝上买了根 ODI 的猫棒。又因为服务器上没有 SFP 口,我也不想再买个网卡,就顺便一起买了个光电转换器。

之前理解到,光纤的端面接口有 PC、UPC、APC 三种,之所以抉择 ODI 的光猫,就是因为咱们个别宽带光纤的端面是 UPC 的,而诺基亚和阿尔卡特之类的猫棒是 APC 接口,还要套个转换器才行,硬插进去可能会损坏光纤,但 ODI 这款采纳的就是 UPC 接口,不必再买转换器。然而我无奈保障笼罩所有状况,如果你也想用猫棒,请肯定提前跟店家和装维徒弟确认好,如果顶坏了光纤端面,你只能喊装维徒弟来给你从新做接头,别无他法!

抓住光纤的蓝色滑套,往后抽,就能够把光纤从光猫上拔出来,而后对准接口插进猫棒,再把猫棒插进光电转换器,而后接上网线和电源,就能够了。

稍等几分钟等猫棒开机,开机之后,转换器在猫棒方向的灯会亮起来。这时候先把网线跟电脑连起来,给电脑调配一个 192.168.1.0/24 范畴的地址(当然别用 192.168.1.1,那是猫棒后盾的地址),而后用浏览器关上192.168.1.1,就能看见猫棒后盾的登陆页面了。账号和明码找商家要,我这款是admin/admin,但不保障所有 ODI 猫棒都是这一对账号密码。登陆进去后,进入Settings 页面,填入 LOID,点Apply Changes,而后进入Commit/Reboot 页面,点 Commit and Reboot 按钮保留配置并重启,猫棒端就配置实现了。

不过电信、联通、挪动的光猫注册形式各有不同,下面说的操作都是针对电信的。其余运营商能够参考猫棒商家发的文档,或参考网上其他人的胜利案例。这里援用猫棒阐明中的一部分内容:

★注册 - 高级:(局部型号光猫没有 GPON SN,可不批改)
电信 & 联通 GPON/XGPON/XGSPON:Loid
挪动 GPON/XGPON/XGSPON:Ploam 明码
电信 & 联通 & 挪动 EPON/10G EPON:Loid

★注册 - 中级:
电信 & 联 & 挪动 GPON/XGPON/XGSPON:GPON SN
电信 & 联通 & 挪动 EPON/10G EPON:MAC/PON MAC+MAC KEY

★注册 - 高级:(GPON/XGPON/XGSPON)
厂商 ID/Vendor ID:如 HWTC/ 华为、FHTT/ 战火、ZTEG/ 中兴、SCTY/ 天邑、YHTC/ 友华
设施型号
OUI:6 位
设施标号:个别为 17 位
软件版本号
ONT 版本 / 硬件版本号

★注册 - 高级:(EPON/10G EPON)
设施型号
ONT 版本 / 硬件版本号

原本重启之后,应该先看一下 ONU 状态是不是 O5 来着,然而过后我忘了看,间接电脑上拨号胜利,间接也证实了 LOID 注册胜利。不过还是放个文档里扒进去的图好了。

装置 RouterOS

一开始我认为装这玩意跟装别的零碎没啥区别,就 ISO 一挂,顺着向导装就行。可看了文档发现,RouterOS 有一个专门面向虚构平台的版本,叫Cloud Hosted Router (CHR),在官网的下载页面下载OVA Template,而后导入 ESXi 就行。具体的装置办法能够看 Mikrotik 的 Wiki。

RouterOS CHR作为一个付费的零碎,当然也须要买受权能力用。买受权的办法也能够跟着 Mikrotik 的 Wiki-GettingtheLicense)操作,就是留神别买成 RouterOS 的 Key,这两者是不通用的。

配置 ESXi 的网络

如果我没记错的话,ESXi 一开始只给 Ethernet 1 口做了配置,咱们得手动给 Ethernet 2 配置虚构网络。

首先到 网络 虚构交换机 页面,创立一个新的虚构交换机,名字按本人爱好起就行,比方我就顺着已有的 vSwitch0 给它命名 vSwitch1。而后点进vSwitch1,点 增加上行链路 ,把vmnic1 调配给它,这样在 ESXi 外面就能够用这个接口了。

而后到 端口组 页面,增加一个新的端口组VM Network 2,虚构交换机抉择刚创立的vSwitch1

接下来点进虚拟机 RouterOS,关机之后编辑设置,给它增加一个网络适配器,而后给 网络适配器 1 调配 VM Network 2,给 网络适配器 2 调配VM Network 1,保留,开机。

配置 RouterOS

如果猫棒的 ONU 状态是 O5,那就能够把转换器连到 Gen 8 的 Ethernet 2 口上了。你问为啥不是 Ethernet 1?因为 Ethernet 1 我改成了与 iLO 共享,所以只能拿 Ethernet 2 当 WAN 口。上面进入 RouterOS,开始配置软路由。

首次登录

第一次登录的时候,因为我并不知道路由器的地址,所以没方法用 IP 地址关上 RouterOS 的配置页面,但 MikroTik 很贴心的提供了用 MAC 地址连贯的性能。在 WinBox 的 Neighbors 页面双击 RouterOS 的条目,用 admin 用户和空明码登录就能够。

为了前面分的分明,我先到 Interfaces 页面,把 LAN 口和 WAN 口对应接口的名字改了过去,毕竟默认的 ether1ether2不如 LANWAN看的分明。通常来说察看接口的 TxRx就能分清哪个是 LAN 口,因为这时候没配置拨号,WAN 口的流量通常只会是 0。如果分不清,那就先把 Gen 8 的 Ethernet 1 拔了。

布局地址范畴,配置 DHCP、DNS

在配置 DHCP 服务器前,要先布局好本人的局域网的网段。地址范畴能够从 IPv4 的三个公有地址范畴 10.0.0.0/8172.16.0.0/12192.168.0.0/16之间选,肯定不要作死用公网网段(比方一些能干 IT 给路由器配了个 1.1.1.1),不然我很难说你的网络会出什么奇怪的问题。我罗唆就遵循之前的网络,用了192.168.1.0/24 段作为我的内网网段。

确定好地址范畴之后,就能够用这条命令给 LAN 口指定一个动态 IP 地址:

/ip/address/add \
  interface=LAN \
  address=192.168.1.3/24 \
  network=192.168.1.0

抉择给 RouterOS 调配 192.168.1.3 的起因是,192.168.1.1留给猫棒(尽管起初发现连不上),192.168.1.2留给 AC86U 路由器,它原本就是这个地址,我懒得再动它。

而后先给 DHCP 服务器增加一个地址池:

/ip/pool/add \
  name=192.168.1.0/24 \
  ranges=192.168.1.2-192.168.1.254

接下来配置 DHCP 服务器:

# 增加 DHCP 服务器
/ip/dhcp-server/add \
  name=LAN \
  address-pool=192.168.1.0/24 \
  interface=LAN \
  lease-time=1d

# 配置 DHCP 服务器下发的网络参数
/ip/dhcp-server/network/add \
  address=192.168.1.0/24 \
  dns-server=192.168.1.3 \
  gateway=192.168.1.3

此外我还想要给 ESXi 之类的机器配置一个固定的地址,于是:

/ip/dhcp-server/lease/add \
  address=192.168.1.4 \
  mac-address=D0:BF:9C:46:94:D8 \
  server=LAN \
  comment=ESXi

下面 DHCP 网络参数中的 dns-server=192.168.1.3 配置的是让 RouterOS 作为 DNS 服务器,但当初 RouterOS 还不能响应近程的 DNS 申请,所以要用上面这条命令更改 DNS 的配置:

/ip/dns/set allow-remote-requests=yes

创立本地管理员,禁用 admin

平安起见,我倡议给 RouterOS 创立一个新的管理员账户,并禁用默认的 admin 账户。

# 创立新的管理员用户,仅容许在 192.168.1.0/24 网络内登录
/user/add \
  name= 新用户的用户名 \
  password= 新用户的明码 \
  group=full \
  address=192.168.1.0/24
# 禁用 admin
/user/set [find name="admin"] disabled=yes

配置 PPPoE 拨号和 NAT 规定

首先创立一个 PPPoE 客户端来拨号:

/interface/pppoe-client/add \
  name="PPPoE 客户端名字" \
  interface=WAN \
  user="宽带账号" \
  password="宽带明码" \
  profile=default \
  use-peer-dns=yes \
  add-default-route=yes

增加胜利后,RouterOS 会主动开始拨号,在终端也能够用 monitor 命令实时监控 PPPoE 拨号端口的状态:

/interface/pppoe-client/monitor [find running]
               status: connected
               uptime: 13h59m53s
         active-links: 1
             encoding: 
         service-name: 
              ac-name: SH-SH-ML-MSE-2.MAN.NE40E
               ac-mac: D0:D0:4B:06:EC:CC
                  mtu: 1492
                  mru: 1492
        local-address: 124.78.123.123
       remote-address: 124.78.123.1
   local-ipv6-address: fe80::5
  remote-ipv6-address: fe80::d2d0:4bff:fe06:eccc
-- [Q quit|D dump|C-z pause]

这时候 RouterOS 本人曾经能够上网了,然而路由器上面的设施还不行,因为没有配置 NAT。在终端执行这条命令,来创立一条 NAT 规定:

/ip/firewall/nat/add \
  chain=srcnat \
  action=masquerade \
  out-interface="PPPoE 接口的名字" \
  comment=NAT

当初路由下的设施就能够上网了。

配置 IPv6

电信宽带曾经反对了 IPv6,那既然有了,我不能不用。电信会给宽带调配一个前缀,上级设施通过前缀来调配本人的地址,就是 prefix delegation。所以我只须要在 RouterOS 中配置一个 IPv6 的 DHCP client 就行。

/ipv6/dhcp-client/add \
  interface="PPPoE 客户端名字" \
  add-default-route=yes \
  pool-name=ipv6_pool \
  pool-prefix-length=60 \
  prefix-hint=::/56 \
  request=prefix \
  use-interface-duid=yes

而后查看 DHCP client 的状态,是 bound 的话就阐明曾经胜利获取到地址和前缀。

/ipv6/dhcp-client/print
Columns: INTERFACE, STATUS, REQUEST, PREFIX
# INTERFACE      STATUS  REQUEST  PREFIX                              
0 China Telecom  bound   prefix   240e:38a:5d27:5c00::/56, 2d21h48m59s

而后让电脑从新连贯路由,就能看到电脑胜利获取到 IPv6 地址了。

配置防火墙

毕竟路由器这种玩意不能在网上裸奔,该禁的端口就得禁。

首先创立两个 interface list,把公网接口和内网接口归类到各自的列表中,不便前面创立防火墙规定。

/interface list
# 给内网接口的 list
add name=local
# 给公网接口的 list
add name=internet

/interface list member
# LAN 口归进 local 这个 list
add interface=LAN list=local
# WAN 口和 PPPoE 口归进 internet 这个 list
add interface=WAN list=internet
add interface="China Telecom" list=internet

而后增加 IPv4 的防火墙规定:

/ip firewall filter
# 放行状态为 established、related、untracked 的数据包
add action=accept chain=input comment="accept established,related,untracked" connection-state=established,related,untracked
# 容许外网 ping,不想容许的话就不执行这条
add action=accept chain=input comment="accept ping" protocol=icmp
# 抛弃 invalid 状态的包
add action=drop chain=input comment="drop invalid" connection-state=invalid
# 兜底规定,抛弃所有来自公网的包
add action=drop chain=input comment="drop all from WAN" in-interface-list=internet
# RouterOS 的疾速跟踪性能,能够跟踪已建设的连贯并让这些流量走快速通道,以升高设施的 CPU 负载
# 如同必须要专门的硬件能力发挥作用,但总之先加在这里
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related hw-offload=yes
add action=accept chain=forward comment="accept established,related, untracked" connection-state=established,related,untracked
# 在 forward 链上也抛弃掉 invalid 状态的包
add action=drop chain=forward comment="drop invalid" connection-state=invalid
# 抛弃所有来自公网,且无端口转发规定匹配的包
add action=drop chain=forward comment="drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=internet

对于 IPv6,要先创立两份 address list,别离蕴含能够放行的地址和有问题的地址:

/ipv6 firewall address-list
add address=fe80::/16 list=allowed
add address=ff02::/16 comment=multicast list=allowed
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only" list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
add address=::224.0.0.0/100 comment="defconf: other" list=bad_ipv6
add address=::127.0.0.0/104 comment="defconf: other" list=bad_ipv6
add address=::/104 comment="defconf: other" list=bad_ipv6
add address=::255.0.0.0/104 comment="defconf: other" list=bad_ipv6

而后配置防火墙规定(其中一些规定我也不明确是啥作用,然而既然蕴含在默认配置里,那配进去应该不会造成什么问题):

/ipv6 firewall filter
# 放行状态为 established、related、untracked 的数据包
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
# 抛弃 invalid 状态的包
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
# 容许 IPv6 ping
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
# 容许 IPv6 traceroute
add action=accept chain=input comment="defconf: accept UDP traceroute" port=33434-33534 protocol=udp
# 容许 DHCPv6 prefix delegation 的包
add action=accept chain=input comment="defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=udp src-address=fe80::/16
# 容许 IKE 数据包
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=input comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
# 兜底规定,抛弃所有不是从 local 接口列表收回的包
add action=drop chain=input comment="defconf: drop everything else not coming from LAN" in-interface-list=!local
# forward 链上放行状态为 established、related、untracked 的数据包
add action=accept chain=forward comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
# forward 链上抛弃 invalid 状态的包
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
# 禁止来自 bad_ipv6 这个地址列表外面的地址
add action=drop chain=forward comment="defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=forward comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment="defconf: drop everything else not coming from LAN" in-interface-list=!local

RouterOS 里一些其它的配置

最初就是一些杂七杂八的配置,比方开启 NTP 客户端来主动同步工夫:

/system ntp client
set enabled=yes
/system ntp client servers
add address=time.windows.com
add address=time.nist.gov
add address=time.apple.com

禁用掉不须要的服务以减小攻击面:

/ip service
# 禁用 telnet
set telnet disabled=yes
# 禁用 ftp
set ftp disabled=yes
# 限度 www、ssh、winbox 服务都只能从内网拜访
set www address=192.168.1.0/24
set ssh address=192.168.1.0/24
set www-ssl address=192.168.1.0/24 disabled=no
set winbox address=192.168.1.0/24
# API 用不到,所以禁用
set api disabled=yes
set api-ssl disabled=yes

开启 UPnP,尽管说开这玩意会有安全隐患,然而开了这么多年也没因为它出过事,这玩意也没法从外网开始口转发,也就是说首先内网得有机器中毒,我自认为我的应用习惯还算是平安的,所以,开。

# 启用 UPnP
/ip upnp
set enabled=yes

/ip upnp interfaces
# 配置 LAN 口作为内网端
add interface=LAN type=internal
# 配置 PPPoE 端口作为公网端
add interface="PPPoE 接口的名字" type=external

开启云服务,包含 DDNS 和主动备份:

/ip cloud
set ddns-enabled=yes ddns-update-interval=1h update-time=yes
退出移动版