我之前宽带一直都是光猫拨号,电脑和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操作,就是注意别买成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: connecteduptime: 13h59m53sactive-links: 1encoding: service-name: ac-name: SH-SH-ML-MSE-2.MAN.NE40Eac-mac: D0:D0:4B:06:EC:CCmtu: 1492mru: 1492local-address: 124.78.123.123remote-address: 124.78.123.1local-ipv6-address: fe80::5remote-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

二手MicroServer Gen8折腾记 - 配置 RouterOS 软路由相关推荐

  1. 记一次软路由折腾记录(Esxi封装驱动、OpenWrt编译与DDNS、Truenas)

    目录 前言 方案选择 软件系统 硬件选择 Esxi 封装驱动 安装Vmware PowerCli 封装驱动 硬件直通 OpenWrt 编译 阿里云DDNS DDNS开机不启动的问题 TrueNas 设 ...

  2. 折腾旧笔记本做软路由和NAS

    一.背景 由于对新电脑抵抗力较低,陆陆续续更新装备,十来年积攒下了三个台式机四个笔记本.近两天终结了一台旧笔记本继续吃灰的情况,将其做成软路由和NAS.一来满足手机.电脑.电视科学上网的需求,二来方便 ...

  3. ROS routerOS 软路由

    一般用routeros - MikroTik Routers and Wireless 官网 : www.mikrotik.com

  4. 深信服S5000-AC刷入 RouterOS 软路由 U盘PE下安装教程 (图文详解超详细)

    1.首先打开深信服天灵盖,然后插入U盘.鼠标,接上VGA线至显示器. 2.进入PE后,按田字键→输入CMD后→按Enter键进入DOS. 3.切换到U盘所在的盘符下,然后按Enter键. 4.输入 p ...

  5. routeros v6.43.2_routeros软路由负载均衡,充分利用带宽,提高效率降低成本

    在企业和小运营商或者网吧中,经常会用到多条wan线路,充分利用每一条宽带并且利用好,是一件需要值得考虑的事情,在软路由routeros中做多线的负载均衡是一个非常好的解决方案. routeros软路由 ...

  6. vm虚拟机安装lede旁路由_折腾群晖笔记:利用VMM虚拟机 安装LEDE旁路由 实现软路由超强功能...

    折腾群晖笔记:利用VMM虚拟机 安装LEDE旁路由 实现软路由超强功能 2019-07-04 15:02:49 305点赞 2000收藏 292评论 你是AMD Yes党?还是intel和NVIDIA ...

  7. win10 软路由_从听说到上手,人人都能看懂的软路由入门指南

    天跟大家分享一篇关于软路由的文章,全程内容比较硬核,希望各位爱折腾的玩家们千万不要错过哦!! 作者:Brick713      文章转载自少数派在互联网时代,家庭网络带宽速度飞速地提升,家庭中的智能移 ...

  8. vm虚拟机安装lede旁路由_利用VMM虚拟机 安装LEDE旁路由 实现软路由超强功能

    我的GEN8从ESXi虚拟机又重新转移到了群晖实体机.实体机功能便捷.易操作,不像虚拟机那样繁琐. 在ESXi中体会了下LEDE软路由,酷软功能十分丰富,软件琳琅满目,我只想使用其中的"签到 ...

  9. 教你利用VMM虚拟机安装LEDE旁路由实现软路由超强功能的方法教程

    我们家里24小时在线的设备,其实只有一台换了J3455主板的黑群晖主机. 其它的NAS设备都是定时开关机,以节省电费. 关于俺的J3455黑群晖主机 安装软路由文章已经写在这里了: 蜗牛星际:我的B款 ...

最新文章

  1. C++ Primer 5th笔记(7)chapter7 类:编译相关
  2. [转载] 深入剖析 redis 主从复制
  3. UBB代码相关内容的收藏
  4. python的解释器怎么打开_怎么启动python解释器
  5. 锁、threading.local、线程池
  6. C语言学习IDE和基本程序结构
  7. 基于Android Ndk/Jni的内存泄漏检测
  8. Bluefish编辑成果即时预览
  9. 关于gvim的高级应用
  10. 自动驾驶(七十二)---------LQR控制算法
  11. 数字IC设计(ASIC设计)完整流程详解
  12. SPM混沌映射(含MATLAB代码)
  13. JS之before的实现
  14. 计算机网络自顶向下方法笔记01
  15. Windows7下安装Docker、下载镜像和运行OpenTsdb容器
  16. 计算机管理找不到防火墙,手把手解答win10系统防火墙服务找不到的问题
  17. Apicloud中在frame中加载数据未完成时显示加载进度条
  18. 网易漫画《变形金刚》系列作品独家正版免费看
  19. linux 网络设备 if_net,struct net_device网络设备结构体详解
  20. android 蓝牙串口收不到数据,蓝牙作为server时 接收不到蓝牙串口模块发送的数据...

热门文章

  1. c语言 struct 占用内存理解
  2. 工控自动化CAD主流电气原理图,多套主流PLC电气图纸
  3. Rock PI 4B Plus(Linux Ubuntu20.04 .4LTS) 安装anaconda教程
  4. 美国服务器的ping值多少网速才算快?
  5. 【RT-Thread Nano】大作业:语音生活小助手
  6. antd pro学习入门笔记+todolist实例
  7. android studio 无法正常安装Android Emulator Hypervisor Driver For AMD Processors
  8. 2017全新《计算机网络原理》新书同步终极讲解视频教程-韩利辉-专题视频课程...
  9. 计算机基础和组成原理——学习资料
  10. app index.html,app_index.html =应用程序在管理站点看到