究极万兆软路由搭建: ESXi 6.7 U3 + RouterOS主路由 + LEDE旁路由

标签: none

玩了大半年的软路由和NAS、给大伙分享一下我用家庭NAS完整解决方案。
刚入门只用了AC88U的梅林系统, 这个系统在双播方面经常不能叠加宽带速度/叠加失效. 又在找了一个新的解决方案 ROS + 旁路由(LEDE).

系统基础环境 ESXi 6.7 和 Proxmox(PVE) 两个选择
ESXi是Vmware推出的一款运行在裸机上的深度定制的Linux系统,其对Intel的驱动支持较好,但是对AMD的支持程度并不好,所以不推荐AMD用户使用。

主路由系统最开始看中了两个 RouterOSpfSense OpenWRT (这个没看上)
很多软路由教程更倾向于使用 RouterOS 我也就跟着入了Ros 的坑

我的网络环境比较复杂 1条 PPoE做双播 可以获得双倍上传 2条路由器拨号 有公网ip 最后一条路由器拨号没公网ip
Ros 设置是即时生效 配合winbox 非常方便

旁路由选择就比较多我最终选了 LEDE
旁路由主要功能 KMS微软激活、koolproxy广告过滤、美元服务、frpc内网穿透、阿里云DDNS等各种路由应用。

Snipaste_2020-02-17_03-09-37.png

比较好看的成品

ex_1.jpg

ex_2.jpg

本篇笔记的主机配置

名称配置
CPUXeon E5-2618L V4 全新
主板X10SRM-TF
内存DDR4-8G-2400 reg ECC
磁盘WD西部数据 M.2 240G SSD
机箱小钢炮 双面玻璃 USB3.0
电源台达 NX350 铜牌电源
风扇2011 四针-调速(双风扇)
网卡X710-4T
网卡RTL8111

ROS-主路由的工作:

  1. PPoE Client
  2. DHCP Client
  3. DHCP Server
  4. DHCPv6 Client (IPv6)
  5. Firewall
  6. Firewall NAT
  7. PCC Load Balancing
  8. Routing rules

LEDE-旁路由的工作:

  1. DNS Server
  2. V2Ray

DIY NAS的工作:

  1. 数据存储
  2. 文件共享
  3. PT下载
  4. KVM + 直通显卡的游戏主机

网络拓扑图:

究极软路由结构图.png

实际使用效果, 下行速度很好的达到了 2.3Gbps的速率完美!

Snipaste_2021-02-09_20-29-31.png

download_test.gif

本篇文章一共分为三个版块

ESXi安装 Part.1 | RouterOS安装 Part.2 | 旁路由(LEDE) Part.3

ESXi安装 Part.1

ESXi是免费的,对于免费用户唯一的限制就是单个虚拟机最多支持8个CPU核心,这一点限制对于我们这些家庭用户完全足够使用,所以第一步就是获取免费ESXi的下载和密钥。

打开https://vmware.com/go/get-free-esxi,如果没有Vmware用户的需要先注册Vmware用户,注册过程中没有太多坑,所以在这里就不再详述。

注册后登录,即可获得密钥,以及下载地址,默认情况下,我们下载VMware vSphere Hypervisor (ESXi ISO) image (Includes VMware Tools) 6.7.0U3 | 314.66 MB ISO镜像文件即可。

Snipaste_2020-02-17_09-55-44.png

保存后镜像后,我们需要准备一个U盘作为启动U盘安装ESXi系统,之后使用软碟通烧写至U盘。

用软碟通打开镜像后,选择启动➡写入硬盘镜像,选择U盘,开始写入。

Snipaste_2020-02-17_09-57-50.png

写入完成后,使用U盘启动安装系统。

Snipaste_2020-02-17_10-14-03.png

选择安装到那个硬盘

Snipaste_2020-02-17_10-15-17.png

设置ROOT用户的密码,这个密码一定要记住。

Snipaste_2020-02-17_10-17-43.png

出现这个框就完成了安装,确认后会重启进入ESXi系统,记得拔掉U盘哦。

Snipaste_2020-02-17_10-19-07.png

启动后,我们首先按F2进行网络的适配。

Snipaste_2020-02-17_10-20-19.png

输入ROOT密码后进入到设置界面,选择Configure Management Network

Snipaste_2020-02-17_10-21-42.png

根据自家的网络情况,手动设置绑定的网卡,IP,掩码以及网关

Snipaste_2020-02-17_10-22-33.png

输入后确认,我们即可在同一局域网下的另外一台电脑中访问至刚才设置的IP。

Snipaste_2020-02-17_10-24-37.png

输入用户名密码后登录,即可打开面板。

Snipaste_2020-02-17_10-29-36.png

ESXi 网络配置

ESXi 默认只包含X710-4T因特尔驱动 RTL8111 Realtek驱动没有包含在里面
需要手动安装 Net55-r8168 文章最下面选择 VIB File of version 8.045a | Offline Bundle of version 8.045a 本站驱动文件备份
最后会得到一个 net55-r8168-8.045a-napi.x86_64.vib 文件

支持的网卡有(Realtek RTL8111B / RTL8168B / RTL8111/RTL8168 / RTL8111C / RTL8111CP / RTL8111D(L) / RTL8168C / RTL8111DP / RTL8111E / RTL8168E / RTL8111F / RTL8411 / RTL8111G / RTL8111GUS / RTL8411B(N) / RTL8118AS / D-Link DGE-528T)

ESXI虚拟机安装Realtek瑞昱RTL8111网卡驱动

1. 登录ESXI6.7 web管理界面
找到:主机>操作>服务>启用安全Shell(SSH)和启动控制台Shell

2. 上传到esxi存储 (可选)
点击web管理界面左侧存储选项,主区域找到“数据存储浏览器”,进入图形浏览界面,新建一个文件夹,我建了一个vib的文件夹,然后上传刚刚下载的驱动
即是/vmfs/volumes/5d00d8cd-63a0054c-95f6-00e06f68011f/vib

这里如果有winscp 可以直接吧文件上传到 /tmp 文件夹 我是这样做的所以我下面的命令不一样

3. 需要先设置Level

esxcli software acceptance set --level=CommunitySupported

4. 安装驱动

esxcli software vib install -v /tmp/net55-r8168-8.045a-napi.x86_64.vib

Installation Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
VIBs Installed: Realtek_bootbank_net55-r8168_8.045a-napi
VIBs Removed:
VIBs Skipped:

对网络有信心的可以在线安装 这样就不用上传文件直接安装了

esxcli software acceptance set –level=CommunitySupported
esxcli network firewall ruleset set -e true -r httpClient
esxcli network firewall ruleset set -e true -r dns
esxcli software vib install -d https://vibsdepot.v-front.de -n net55-r8168

本段参考
Installing Realtek Driver on ESXi 6.7
ESXI虚拟机安装Realtek瑞昱RTL8111G/8168网卡驱动

ESXi 网络接口分配

1. 首先打开 网络-->虚拟交换机
2. 添加标准虚拟交换机
3. 为每一个网络接口添加一个对应的虚拟交换机, 保证一个接口一个交换机

Snipaste_2020-02-18_06-25-01.png

4. 添加端口组, 为每一个虚拟交换机添加一个端口组

Snipaste_2020-02-18_06-30-07.png

到这里网络基本设置完成, 虚拟机添加网卡在下一部分.

可能会用到的功能
ROS的工作模式和ESXI网卡工作模式的关系

RouterOS安装 Part.2

注意: 在ESXi 6.7 U2 上 导入虚拟机有一处js的bug 需要更把UI 降级才可以使用 或者使用 ESXi 6.7 U3 版本
文件名: esxui-signed-12086396.vib
安装方法和安装网卡驱动的步骤一样. 不在过多叙述.

导入RouterOS系统.

文件名: MikroTik RouterOS x86 6.44.1,已激活L6授权 ,可升级,永久使用.rar
解压得到: MikroTik-RouterOS-6.44.2.ova

1. 选择 从 OVF 或 OVA 文件部署虚拟机

Snipaste_2020-02-19_04-17-50.png

2. 上传虚拟机文件

Snipaste_2020-02-19_04-19-08.png

3. 选择磁盘位置

Snipaste_2020-02-19_04-19-30.png

4. 自动打开电源取消勾选

Snipaste_2020-02-19_04-20-09.png

5. 完成

Snipaste_2020-02-19_04-20-34.png

6. 编辑虚拟机网卡设置, 然后启动

Snipaste_2020-02-19_04-20-34.png

路由器直连电脑 电脑上装好 WinBox 配置路由器

首先打开 Interfaces --> interface 把里面的网卡设置一个好识别的名字, 可以看mac 地址对应ESXi 里面网卡设置的名称

Snipaste_2020-02-19_05-27-19.png

总结一下我们要设置的内容

1. 3条 DHCP Client 光猫拨号的WAN
2. 1条 PPPoE 双播
3. LAN 口的 DHCP Server
4. DNS 设置
5. DHCPv6 Client (IPv6配置)
6. PCC Load Balancing
7. Routing rules
8. Firewall NAT 端口映射
9. RouterOS 安全设置

建立 DHCP Client 从光猫拨号的设备获取IP地址

选择 IP --> DHCP Client
添加新 DHCP Client 把 Use Peer DNS | Use Peer NTP 取消勾选, Add Default Route 选择 no
有三条需要用 DHCP Client 添加三次即可 Interface 要选择正确的接口.

Snipaste_2020-02-19_06-35-47.png

PPPoE 双播

打开 Interfaces --> interface 添加一个 PPPoE Client
Dial On Demand | Use Peer DNS | Add Default Route 不勾选

Snipaste_2020-02-19_06-50-36.pngSnipaste_2020-02-19_06-52-24.png

LAN 口的 DHCP Server

建立DHCP服务器,先设立DHCP分配的ip范围,也就是Pool, 在侧菜单 IP --> Pool。然后菜单 ip --> DHCP Server
这里DNS 要按照实际情况设置 不要照抄

Snipaste_2020-02-19_08-58-02.png

Snipaste_2020-02-19_08-59-32.png

网关地址设置成 Ros 的地址 例如 192.168.1.1 DNS也同样设置为 192.168.1.1

Snipaste_2020-02-19_09-01-04.png

DNS 设置

建立routeros的DNS,菜单IP --> DNS,这里的 Dynamic Servers 2408:8000::8 就是 WAN-500M-CU-2:1-pppoeUse Peer DNS获取到的, 这是IPv6 的DNS 服务器, 后面讲.

151907-764x640.png

Snipaste_2020-02-19_09-09-37.png

DHCPv6 Client (IPv6配置)

我这里三个运营商家宽已经普及IPv6了, 目前只有在Ros 里面拨号的设置IPv6.

IPv6的地址共有128位,也就是IPv6地址总量一共有2的128次方个地址。/32、/48是IPv6地址的一种表示方式,表示IPv6地址的一个整块,也可以理解为是一个完整的IPv6地址池。在计算IPv6地址数量的时候,/32的IPv6地址数量是2的(128-32)次方个地址,也就是2的96次方个地址。/48的IPv6地址数量是2的(128-48)次方个地址,也就是2的80次方个地址。同理,/64的IPv6地址数量是2的(128-64)次方,也就是64次方个地址。我这里分配到的是/56前缀的IPv6地址池。

双栈(Dual-stack):双栈技术运行IPv4和Ipv6共存在同一个网络。

1. 打开IPv6 --> DHCP Client, Interface 选择PPPoE拨号连接(WAN-500M-CU-2:1-pppoe
2. Request 勾上 prefix
3. Pool Name随便填,如 WAN-500M-CU-2:1-pppoe
4. Pool Prefix Length 填入运营商分配的,我这里是60(一般是64,56,48这3种)
5. 勾上 Use Peer DNS | Add Default Route | Rapid Commit
6. 点击OK

获取成功后的状态为 Status:bound

Snipaste_2020-02-19_10-04-47.png

1. 打开 IPv6 --> Addresses, 添加地址。
2. Address 填入 ::/64
3. From Pool 选择 WAN-500M-CU-2:1-pppoe(也就是第3步填写的 Pool Name
4. Interfac 选择 LAN 端口(我这边选择 LAN1
5. 勾上 Advertise
6. 点击OK

Snipaste_2020-02-19_10-33-17.png

IPv6测试: http://test-ipv6.com/

8d0c1538494775.png

Snipaste_2020-02-19_10-35-19.png.png

aeea1546931331.png

RouterOS配置原生IPv6(电信IPv4/IPv6双栈)

PCC(Per connection classified) Load Balancing 比例权重路由

假设网络有这样一个需求,同时拥有两条相同运营商的出口,一条 8M,一条是 25M,想做策略将两条线路 实现权重的路由策略,我们可以通过 PCC 来实现

平常我们都是用 PCC 做多条相同带宽出口的负载均衡,而这次则是通过他的分类原理实现比例权重的路由策略,当然 Nth 也可以实现,但 Nth不如 PCC稳定好用。

Snipaste_2020-02-26_14-22-55.png

实现原理比较简单,一条 8M,一条是 25M,后者大约是前者的 3 倍出口,所以约等于 1:3(8/33 : 25/33), 那就是要按照 1:3 的比例分配路由,我的策略是将 PCC 策略看成 4 份,然后路由指定按照 1:3 的路由规则分配。

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=pcc1 passthrough=yes per-connection-classifier=both-addresses:4/0 src-address-list=userip
add action=mark-routing chain=prerouting connection-mark=pcc1 new-routing-mark=r1 passthrough=yes src-address-list=userip

add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=pcc2 passthrough=yes per-connection-classifier=both-addresses:4/1 src-address-list=userip
add action=mark-routing chain=prerouting connection-mark=pcc2 new-routing-mark=r2 passthrough=yes src-address-list=userip

add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=pcc3 passthrough=yes per-connection-classifier=both-addresses:4/2 src-address-list=userip
add action=mark-routing chain=prerouting connection-mark=pcc3 new-routing-mark=r3 passthrough=yes src-address-list=userip

add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=pcc4 passthrough=yes per-connection-classifier=both-addresses:4/3 src-address-list=userip
add action=mark-routing chain=prerouting connection-mark=pcc4 new-routing-mark=r4 passthrough=yes src-address-list=userip

Snipaste_2020-02-26_14-16-28.png

/ip route
add check-gateway=ping gateway=8M routing-mark=r1
add check-gateway=ping gateway=25M routing-mark=r2
add check-gateway=ping gateway=25M routing-mark=r3
add check-gateway=ping gateway=25M routing-mark=r4

Snipaste_2020-02-26_14-17-57.png

路由配置
其实权重的分配关键就在路由设置上,这里我们把网关命名为 8M 和 25M 以示区分。将分配好的路由标记按照
1:3 的比例分配到各条线路上

nat 配置
配置 nat 规则类似的操作

/ip firewall nat
add chain=srcnat action=masquerade out-interface=8M
add chain=srcnat action=masquerade out-interface=25M

Snipaste_2020-02-26_14-21-18.png

配置完成后流量几乎按照预想的方式运行, 这样的操作建议使用到相同类型的出口.

ROS软路由功能强大的ROS系统,PCC 实现比例权重路由
官方文档 Manual:PCC

RouterOS 多线路 PCC 负载均衡及端口映射

真实环境不便透露,这里均为实验环境。PCC 规则需要至少 2 条 ISP 线路接入,这里为 2 条。

拓扑.png

上面那个很丑的图是实验拓扑,可以看到:

  • 有 2条 公网线路,地址为 1.1.1.1001.2.1.100
  • 内网地址忘了写,为 172.16.0.254 ,内网找了台测试服务器 172.16.0.222

基本配置就是这样了,先介绍下 PCC :

PCC 全称 per connection classifier ,是 RouterOS 从 v3.24 版本后提供的功能,允许你将流量按照:源地址,源端口,目的地址,目的端口等规则进行分流,从而实现网络负载均衡功能。大概原理是查看 IP 包头 通过特定 Hash 算法进行比较并根据设置的规则捕获数据包。

根据上面的配置,修改内网网卡为名称为 LAN ,外网网卡分别为 WAN1 和 WAN2 ,并配置相应 IP 地址,这里不再赘述基础配置。

标记公网流量
因为有两条公网线路,流量进来的时候网络必须知道是从那条线路进入,同时从相同的线路出局,所以我们需要标记所有公网进入的流量用以区分

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=WAN1 new-connection-mark=WAN1_conn
add action=mark-connection chain=prerouting in-interface=WAN2 new-connection-mark=WAN2_conn

创建 PCC 规则
这里我们选择根据源地址的方式创建 PCC 规则,需要注意的是, PCC 策略是从 0 开始计数,所以这里两条线路的配置为 2/02/1

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=LAN new-connection-mark=WAN1_conn per-connection-classifier=both-addresses:2/0
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=LAN new-connection-mark=WAN2_conn per-connection-classifier=both-addresses:2/1

根据标记创建动态策略路由
标记到数据包后,我们需要根据这些标记,分别创建路由规则,解决多网关以及流量负载均衡的问题

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=WAN1_conn in-interface=LAN new-routing-mark=to_WAN1
add action=mark-routing chain=prerouting connection-mark=WAN2_conn in-interface=LAN new-routing-mark=to_WAN2
add action=mark-routing chain=output connection-mark=WAN1_conn new-routing-mark=to_WAN1
add action=mark-routing chain=output connection-mark=WAN2_conn new-routing-mark=to_WAN2

创建路由
为所有规则创建路由表

/ip route
add dst-address=0.0.0.0/0 gateway=1.1.1.254 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=1.2.1.254 routing-mark=to_WAN2 check-gateway=ping

创建故障转移路由
防止任意线路中断

/ip route
add check-gateway=ping distance=1 gateway=1.1.1.254,1.2.1.254

创建 NAT 规则
伪装的方式有两种 一种是MASQYERADE 一种是SRC-NAT
第一种简单方便适合动态IP 第二首适合静态IP但是NAT效率上SRC-NAT的转换效率更高
当然动态IP也可以使用SRC-NAT 然后使用脚本进行检测外网IP变动后刷新 但是考虑 路由器的存储颗粒是有写入寿命的 所以不太建议

/ip firewall nat
add action=masquerade chain=srcnat out-interface=WAN1
add action=masquerade chain=srcnat out-interface=WAN2

创建策略 (未测试)
因为有了策略路由,所以流量有可能被强制引导到特定网关,所以需要使用下面这些规则避免这种情况

/ip firewall mangle
add chain=prerouting dst-address=1.1.1.0/24 in-interface=LAN
add chain=prerouting dst-address=1.2.1.0/24 in-interface=LAN

此时,PCC 策略就建立完成了,通过 172.16.0.222 访问公网,你会发现,2 条线路中断任意一条均不影响正常访问,同时开启迅雷等支持 P2P 方式下载的软件会发现带宽增加了一倍!

创建端口映射规则
因为此时为 2 条出口线路,所以端口转发规则也需要建立两条,因为之前根据入口标记了流量,所以从任意线路进入的流量均会原路返回!
这条规则将会把 2 条线路的 tcp80 端口转发到 172.16.0.222 机器的 tcp80 端口。

/ip firewall nat
add action=dst-nat chain=dstnat dst-address=1.1.1.100 dst-port=80 protocol=tcp to-addresses=172.16.0.222 to-ports=80
add action=dst-nat chain=dstnat dst-address=1.2.1.100 dst-port=80 protocol=tcp to-addresses=172.16.0.222 to-ports=80

干货!RouterOS 多线路 PCC 负载均衡及端口映射

以上分流规则可以借鉴 但在新版本则测试失败 per-connection-classifier=both-addressesboth-addresses均无法正常使用.

PCC重点

需要把 both-addresses 设置为 both-addresses-and-ports 才可正常使用.
参考命令 2 WAN PPPoE балансировка нагрузки с использованием PCC.txt
PCC 建议按照 txt 里的命令设置, 来自一位TG 大佬的分享.

/ip address
add address=192.168.50.2/24 network=192.168.50.0 broadcast=192.168.50.255 interface=Local
add address=192.168.1.2/24 network=192.168.1.0 broadcast=192.168.1.255 interface=WAN1
add address=192.168.2.2/24 network=192.168.2.0 broadcast=192.168.2.255 interface=WAN2
/ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=WAN2_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=Local
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN2
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping
/ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade

Routing rules

设置路由规则, 联通走联通 电信走电信.
这一部分我是指定ip 走不同的线路. 根据个人使用习惯而定.
此部分紧接着PCC设置

打开 IP --> Routes --> Rules
Dst. Address 可以是目标地址的ip 1.1.1.1 或者 IP段 1.1.1.0/24
Table 选择PCC 设置的出口标记, 保存就成功了.

Snipaste_2020-02-28_12-35-45.png

或者闲着蛋疼就设置完整的 电信ip段走电信的规则 jacyl4/ros-pbr-CT-CMCC 这里有整理好的ip段规则表.
如果Table 不是默认的 CT 先修改完再上传.

直接导入ROS以生成电信移动路由表
传入ROS后,在ROS的终端下执行 /import _ros-pbr-CT-CMCC.rsc即可。

Firewall NAT 端口映射

端口映射分两种一种是对等映射即内网80端口映射外网80即为对等映射,不对等映射内网80映射外网90或者任意端口即为不对等映射,还有需要注意 如果你的ROS是多线接入的 你需要给内网主机标记路由 或者标记端口 然后在进行端口映射!

这一部分重点, 有旁路由的网关要设置为 主路由 Ros 网关 NAT 规则才会生效

0303160029.png

20180513215925.png

20180513220318.png

测试时不要再路由器地下测试,可能会有NAT Loopback问题,建议用手机开4G测试

ROS端口映射成功,但显示的外网IP都是路由器的地址

问题:
ROS端口映射成功,外网可以正常访问内网机器,但是在内网机器上用 netstat -n 查看都是显示的网关(路由器)地址192.168.1.1
比如说:
外网IP为:219.138.144.129的用户正在访问我映射成功的内网机器上的FTP服务器192.168.1.6,此时在FTP服务器上用netstat -n查看,显示的都是192.168.1.1连接,而不显示219.138.144.129连接;
ROS里NAT栏目我是这样设置的:

General选项
Chain:dsnat
Src.address:219.138.144.129
Dst.address:我的外网IP地址
Protocol:6(tcp)
Dst.port:21

Action选项
Action:dst-nat
To addresses:192.168.1.6
To Ports:21

请问我这有哪里设置不当吗?该如何设置才能直接显示为外网IP?
谢谢!
由于机器和网络资源有限及网络安全等因素,所以仅允许指定的几个IP使用我的FTP服务器。其他任何未指定IP均不能访问我的外网IP!

回答:

RouterOS 2.9 以上版本的解决办法是:
在NAT栏目中添加 masquerade IP伪装的时候要这样写:

General选项
Chain:srcnat
Src.address:192.168.1.0/24(你内网的IP段)
其他留空
Action选项
Action:masquerade

重点:General选项中 src.address 要写自己的网段比如192.168.1.0/24,任意(0.0.0.0/0)地址或不写的话就会出现以上都变成内网网关问题!

ROS端口映射成功,但显示的外网IP都是路由器的地址

NAT Loopback / Hairpin NAT

还没整明白.jpg

RouterOS 安全设置

1. 给路由器设置密码, 打开 System --> Password 修改路由器登录密码 越复杂越好

2. 关闭不需要的服务 打开 IP --> Services 关闭除 winbox 以外的所有服务

扩展阅读

ROS 千兆多网卡(lan)桥接 =路由器+多口千兆交换机

有了ROS软路由的朋友,家里有个局域网还要买个多口的千兆的交换机会增加不少的成本。如果ROS软路由的电脑主板上有足购的PCI插槽或者集成二口千兆网卡的最好,那么按照下面的方法能实现多口千兆交换机的功能。一般家用的都是用ADSL拔号上网的,那么wan的网卡就用intel的100兆网卡即可。假如有五块千兆网卡组成lan,即ether1,ether2,ether3,ether4,ether5,ether6(接宽带的wan口)那么:

1、先建立一个名为mybridge的桥

interface bridge add name="mybridge" disable=no

2、将ether1-ether5的五块网卡加入到这个新建的桥中

interface bridge port add interface=ether1 bridge=mybridge
interface bridge port add interface=ether2 bridge=mybridge
interface bridge port add interface=ether3 bridge=mybridge
interface bridge port add interface=ether4 bridge=mybridge
interface bridge port add interface=ether5 bridge=mybridge

ok,五块已经组成桥
3、设置桥的IP地址,如192.168.1.1

ip address add address 192.168.1.1/24 interface=mybridge

这时,可以用winbox连接ROS了,其他的设置皆可在winbox 里操作了。
5个lan口就像交换机一样使用了,性能比普通的千兆交换机要好得多。

旁路由(LEDE) Part.3

开启LEDE虚拟机, 进入虚拟机LEDE控制台
在命令行输入

vi /etc/config/network

lede16.png

将网卡配置更改为下面的内容。输入完后我们按ESC退出编辑,并按:wq保存当前文档。注意:IP和网关需要根据自己的网络来修改

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdf1:53e1:6bd9::/48'

config interface 'lan'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.31.40'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ifname 'eth0'
        option gateway '192.168.31.250'
        option dns '223.5.5.5'

IP设置成跟ROS为同一网段,网关设置成ROS的IP地址 option ipaddr代表IP地址。option gateway 代表网关

lede17.png

输入下面的命令,重启LEDE网络

/etc/init.d/network restart

lede18.png

不出意外的话, 现在我们已经可以通过访问LEDE刚刚设置的IP, 浏览器输入IP:192.168.31.40, 进入LEDE的面板了。

配置LAN

lede19.png

关闭DHCP服务器

lede20.png

更新软件中心及固件。

Snipaste_2020-02-28_13-16-44.png

参考资料
基于ESXi的软路由(LEDE)与黑群晖的安装与配置 ★★★★★
路由器拓扑图设计网站 ★★★★★
分享万兆网络拓扑(201906)★★☆☆☆
基于RouterOS和RHEL的无障碍网络访问解决方案 ★★☆☆☆
【ROS+LEDE合用】双线聚合,真旁路,超绝加速Burst Link【上篇】★★☆☆☆
【ROS+OpenWrt合用】双线聚合,真旁路,超绝加速Burst Link【下篇】 ★★☆☆☆
ESXI打造最强家庭软路由系统ROS+LEDE+全能NAS方案(2018版) 图片不稳定 ★★☆☆☆
本教程只是简单的ROS 基本配置 包括PPPOE DHCP DNS 伪装 和 Firewall Bridge Addresses ★★☆☆☆
pppoe端口映射(port mapping) ★★★☆☆
官方文档 Hairpin NAT ★★★☆☆
為你的RouterOS 設定NAT loopback (Hairpin NAT) ★☆☆☆☆
X10SRM-TF | Motherboards | Products | Super Micro Computer, Inc. ★★★★☆
www.supermicro.org.cn_en_products_motherboard_X10SRM-TF.png 产品截图 ★★★★☆
Manual:Cloud Hosted Router CHR 官方文档
ROS 千兆多网卡(lan)桥接 =路由器+多口千兆交换机 本文没用上但写的不错 ★★★☆☆
Gen8折腾记--ESXi虚拟化与软路由篇 ☆☆☆☆☆
需要端口映射的不能按照此教程设置 使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能 ☆☆☆☆☆


扫描二维码,在手机上阅读!

已有 7 条评论

  1. Hunter Hunter

    ISO那步,考虑ventory,可以忽略麻烦的写盘。

    1. 写盘更推荐 rufus, 之前这个随便用了一个截图的

  2. 不知道博主有没有遇到ping值不文档,还时常断网的情况?

    1. 没遇到过, 软路由已经在线200多天了一直很稳定。只有PCC分流有问题手动指定路由的话就没问题

  3. lee lee

    博主你好,我是用minipcie的rtl811g网卡,用来做wan口,但是装了驱动后在esxi里识别为r8168然后网速显示为百兆。。这是啥问题啊

  4. Scotte Scotte

    你好,我的网络是Netgear R7000(Merlin)[192.168.1.1],hp gen8搭建UNRaid[192.168.1.99],Unraid 创建虚拟机用于DSM[192.168.1.90],Docke上搭建Nginx proxy manage[192.168.1.99:7818监听端口1880、18443]
    R7000配置:端口映射5001->192.168.1.90:5001 80->192.168.1.99:1880 443->192.168.1.99:18443

    <code> dnsmasq a.domain.com-&gt;192.168.1.90 </code>

    NPM设置:b.domain.com->https://192.168.1.90:5001
    Cloudflare NS: a.domain.com 和b.domain.com均指向 R7000的公网IP。

    目前可以存外网直接访问a.domain.com:5001 和b.domain.com,均能指向DSM。

    但在内网只能通过192.168.1.90:5001或者a.domain.com:5001访问DSM。

    如果在R7000 dnsmsq 或者电脑 hosts文件加上b.domain.com->192.168.1.99,均会提示链接被拒绝。问题应该在NPM上,但是在外网访问b.domain.com不用端口就可以正常访问,后面我搜了许多相关内网客户端访问内网的服务器,一种方法是自建DNS,另外一种是解决HairPin NAT问题,R7000选择了默认的ASUS或者Merlin NAT loopback都不行,还是绕到公网去传输数据。

    请问在梅林下如何设置HairPin NAT ?内网数据直接转发到内网服务器。能不能用命令直接写入NAT转发呢?谢谢!

    1. 梅林我只有AP的设备在用, 主路由我用的是routerOS

添加新评论