以前接触router,都是物理机,思科华为华三的为主,但换了新工作后,开始接触MIKROTIK RouterOS 虽然原理上大致相同,但是命令行上有些差异,为了学习和方便以后,记录一下常用的命令集
OS 软路由相关
[admin@MikroTik]>/user #进入操作路径
[admin@MikroTik]/user>print #显示RouterOS用户
[admin@MikroTik]/user>set admin password=123456 #修改admin用户密码为123456
[admin@MikroTik] /user> / #返回根目录
在当前用户下修改密码
[admin@MikroTik]>password #修改本目录用户密码
备份命令
[admin@MikroTik]>/system backup #进入操作路径
[admin@MikroTik] /system backup>save name=testbackup #备份名为testbackup
[admin@MikroTik] /system backup>load name=testbackup #载入备份testbackup
[admin@MikroTik]>file print #查看备份情况
导出指令
[admin@MikroTik]>ip address print #查看IP
[admin@MikroTik]>/ip address #进入IP操作路径
[admin@MikroTik]/ip address>export file=address #导出一个名为address的IP地址配置参数
[admin@MikroTik]>export compact #查看IP地址配置参数
系统重启与关机
[admin@MikroTik]>system reboot #系统重启
[admin@MikroTik]>system shutdown #系统关机
修改RouterOS主机名
[admin@MikroTik]>system identity print #查看RouterOS主机名
[admin@MikroTik]>system identity set name=MyRouterOS #修改RouterOS主机名为MyRouterOS
系统资源管理
[admin@MikroTik] > /system resource #操作路径
[admin@MikroTik] /system resource> print #查看CPU占用率\内存\硬盘等使用情况
[admin@MikroTik] /system resource> monitor #查看CPU和空闲内存使用情况
开通ssh远程
[admin@MikroTik] > ip service print #查看服务
[admin@MikroTik] > ip service enable ssh #开启SSH服务
[admin@MikroTik] > ip service disable ssh #关闭SSH服务
[admin@MikroTik] > ip service set ssh port=22 address=10.8.9.11 #允许10.8.9.11访问SSH访问,其它IP都均被拒绝
Interface接口基本操作
[admin@MikroTik] > interface print #显示接口状态
[admin@MikroTik] > interface enable ether1 #启动ether1网卡
[admin@MikroTik] > interface print stats #显示接口状态+静态流量
[admin@MikroTik] > interface monitor-traffic ether1 #监测网卡动态流量
[admin@MikroTik] > interface ethernet print detail #显示网卡参数
IP配置与ARP
[admin@MikroTik] > ip address add address=192.168.10.1/24 interface=ether2 #添加IP地址到ether2接口上
[admin@MikroTik] > ip address print #显示IP地址
[admin@MikroTik] > ip arp print #显示arp信息
[admin@MikroTik] > ip arp add address=192.168.10.100 interface=00:23:24:2e:78:3e #添加静态IP与ARP
[admin@MikroTik] >/interface ethernet set ether2 arp=reply-only #设置ether2接口非静态的ARP条目将无法与路由进行通信
防火墙过滤(firewall Filte)----域名过滤
[admin@MikroTik]>ip firewall filter add action=drop chain=forward content=www.jd.com
防火墙过滤(firewall Filte)----端口映射将内网主机192.168.10.200的3389端口映射到外网的9999端口
[admin@MikroTik] > ip firewall nat add chain=dstnat protocol=tcp dst-port=9999 in-interface=WAN action=dst-nat to-addresses=192.168.10.200 to-ports=3389
网络中仅允许192.168.10.0/24、192.168.20.88/32、192.168.30.88/32的主机能访问互联网,其他IP地址拒绝访问,首先在/ip firewall address-list创建白名单列表
[admin@MikroTik]>/ip firewall address-list
[admin@MikroTik] /ip/firewall/address-list>add address=192.168.10.0/24 list="whitelist"
[admin@MikroTik] /ip/firewall/address-list>add address=192.168.10.88 list="whitelist"
[admin@MikroTik] /ip/firewall/address-list>add address=192.168.30.88 list="whitelist"
进入/ip firewall filter下配置过滤策略,内部局域网到互联网访问是forward链表,首先匹配允许白名单列表通过
[admin@MikroTik] >/ip firewall filter
[admin@MikroTik] /ip/firewall/filter> add action=accept chain=forward src-address-list="whitelist"
再添加拒绝所有IP通过,注意添加顺序,防火墙是按照顺序执行,规则在优先级越高。
[admin@MikroTik] /ip/firewall/filter>add action=drop chain=forward
禁止192.168.20.0/24和192.168.30.0/24访问互联网,创建一个blacklist黑名单
[admin@MikroTik] /ip/firewall/address-list>add address=192.168.20.0/24 list="blacklist"
[admin@MikroTik] /ip/firewall/address-list>add address=192.168.30.0/24 list="blacklist"
在filter下配置过滤策略,内部局域网到互联网访问是forward链表,配匹blacklist的ip地址禁止通过
[admin@MikroTik] /ip/firewall/filter> add action=drop chain=forward src-address-list="blacklist"
注意:默认情况下所有filter链表规则是accept接受通过,因此只需要添加drop丢弃规则,不匹配的IP将会被接受通过
之前我们的策略允许192.168.20.88和192.168.30.88可以访问互联网,那我们需要补充两条规则
[admin@MikroTik] /ip/firewall/filter>add action=accept chain=forward src-address=192.168.20.88
[admin@MikroTik] /ip/firewall/filter>add action=accept chain=forward src-address=192.168.30.88
使用print命令查看filter列表,规则1,2是192.168.20.88和192.168.30.88的允许规则,在规则0后面,肯定不会优先处理
[admin@ MikroTik] /ip/firewall/filter> print
Flags: X - disabled, I - invalid; D - dynamic
0 chain=forward action=drop src-address-list=blacklist log=nolog-prefix=""
1 chain=forward action=accept src-address=192.168.20.88 log=nolog-prefix=""
2 chain=forward action=accept src-address=192.168.30.88 log=nolog-prefix=""
-------------将规则1,2移动到0之前优先处理,通过move命令调整顺序
[admin@MikroTik] /ip/firewall/filter> move 1,2 0
端口映射
/ip firewall nat add action=dst-nat chain=dstnat \
dst-address-list=WAN_IP dst-port=7890 log=yes protocol=tcp \
src-address-list=iplist_boxin to-addresses=172.25.20.201 \
to-ports=7990
## 当外部设备访问软路由的公网 IP(WAN_IP)的 TCP 7890 端口时,路由器会将流量转发到内网 IP 为 172.25.20.201 的设备的 7990 端口 用于实现端口映射(如远程访问内网服务)
## src-address-list=iplist_boxin:可选限制:仅允许 iplist_boxin 列表中的 IP 发起连接(类似白名单),如果列表为空,则不限制源 IP。
## 启用 OSPF 进程
/routing ospf instance
set [find default=yes] enabled=yes router-id=192.168.1.1
## router-id 需为路由器的 IP 或 Loopback 地址,全网唯一。
## 创建 OSPF 区域
/routing ospf area
add area-id=0.0.0.0 name=backbone
area-id=0.0.0.0 表示骨干区域。
## 添加接口到 OSPF
/routing ospf interface
add area=backbone interface=ether1 network-type=broadcast
add area=backbone interface=ether2 network-type=broadcast
## interface 为参与 OSPF 的物理接口。
## 验证配置
### 手动指定邻居(适用于非广播网络)
/routing ospf neighbor print
address=10.1.1.2 \ # 新邻居的 IP 地址
interface=ether3 \ # 本地连接接口
area=backbone \ # 区域名称
cost=10 # 可选:指定开销值
## 验证邻居关系:
/routing ospf neighbor print
### 设置接口开销 调整接口优先级以影响路由选择:
/routing ospf interface set [find interface=ether3] cost=20
### 配置认证
/routing ospf area set [find name=backbone] authentication=md5
/routing ospf interface set [find interface=ether3] \
authentication-key="your-secret-key"
####调整 Hello/Dead 间隔
/routing ospf interface set [find interface=ether3] \
hello-interval=10 \
dead-interval=40
###检查邻居状态:
/routing ospf neighbor print detail
### Full:邻居关系正常。
### Exstart/Exchange:正在交换数据库,可能 MTU 不匹配。
### Down:连接失败,检查物理链路或认证配置。
#### 查看接口状态:
/routing ospf interface print
### 确保接口状态为 enabled 且 state=DR/BDR/DROther。
### 放行 OSPF 协议(IP 协议号 89):
/ip firewall filter add \
chain=input \
protocol=89 \
action=accept
### 添加邻居后,确认路由已正确传播:
/ip route print where protocol=ospf
### 若未看到预期路由,检查:新邻居是否正确宣告了网络,区域类型是否匹配(如骨干区域与非骨干区域)。
## 创建 VRRP 接口
/interface vrrp
add interface=ether1 name=vrrp1 vrid=10 priority=100 \
authentication=md5 authentication-passphrase="yourpassword"
### vrid:VRRP 组 ID(1-255),需与备份路由器一致
### priority:优先级(1-254),值越高越优先成为主路由器
## 配置虚拟 IP
/ip address
add address=192.168.1.1/24 interface=vrrp1 network=192.168.1.0
### 设置跟踪接口(可选) 若主链路断开,自动降低优先级:
/interface vrrp
set [find name=vrrp1] track-interface=ether2 track-interface-downgrade=50
### 验证状态
/interface vrrp print detail
#### 查看 state 字段:master(主路由器)或 backup(备份路由器)
###防火墙规则,基于接口的源地址转换(SNAT)
[admin@ROS] > ip firewall/ mangle/export t
/ip firewall mangle add action=mark-connection chain=prerouting in-interface=ether1 new-connection-mark=conn_from_ether1 passthrough=no
/ip firewall mangle add action=mark-connection chain=prerouting in-interface=ether2 new-connection-mark=conn_from_ether2 passthrough=no
/ip firewall mangle add action=mark-connection chain=prerouting in-interface=ether3 new-connection-mark=conn_from_ether3 passthrough=no
### action=mark-connection:标记整个连接,而非单个数据包。一旦连接被标记,后续该连接的所有数据包都会被视为已标记。
### chain=prerouting:在数据包进入路由决策前进行处理,适合用于标记需要特殊路由或 NAT 处理的流量。
### in-interface=ether1:仅匹配从ether1接口进入的流量。
### new-connection-mark=conn_from_ether1:为符合条件的连接添加名为conn_from_ether1的标记。
### passthrough=no:即使规则匹配成功,数据包仍会继续接受后续 mangle 规则的检查(仅影响 mangle 表)。
作用:
将从ether1接口进入的所有新连接标记为conn_from_ether1,以便后续基于此标记进行流量处理。
[admin@ROS] > ip fire nat ex t
/ip firewall nat add action=src-nat chain=srcnat connection-mark=conn_from_ether1 to-addresses=172.23.0.241
/ip firewall nat add action=src-nat chain=srcnat connection-mark=conn_from_ether2 to-addresses=172.23.0.242
/ip firewall nat add action=src-nat chain=srcnat connection-mark=conn_from_ether3 to-addresses=172.23.0.243
### action=src-nat:修改数据包的源 IP 地址,使内网主机能够通过指定 IP 访问外网(隐藏真实源 IP)。
### chain=srcnat:在数据包即将离开路由器时进行处理,是配置 SNAT 的标准链。
### connection-mark=conn_from_ether1:仅匹配之前被标记为conn_from_ether1的连接(即来自ether1接口的流量)。
### to-addresses=172.23.0.241:将源 IP 替换为该地址,通常是公网 IP 或路由器的外网接口 IP。
作用:
将所有来自ether1接口的流量(已被标记)的源 IP 地址转换为172.23.0.241,实现隐藏内网 IP 的目的。
持续记录补充中……