Ferrets家的Wordpress

杂记

网络

对各种网络问题的研究

使用OPNsense来保护内网的服务

2023年1月17日 by Ferrets Leave a Comment

因为在家里部署了不少应用服务,所以,也想将一些服务暴露到公网上,但是呢,直接暴露的话,会有非常大的风险。全部走vpn也略微有点麻烦,虽然最近看到一些油管的UP主在推荐cloudflare的tunnel服务,但是我都自己托管了,还走cloudflare是不是有点……愚蠢呢。

因为工作的原因有接触过pfSense,然后也尝试过其分支OPNsense,一番测试之后,发现大有可为,不得不说真好使。

安装OPNsense

就是很普通的用iso引导,然后根据屏幕上的说明一路下一步就行。安装完毕之后,顺手更新一下系统。调整一下时区、默认语言等。

安装必要的插件

最主要的插件只有2个,一个是os-acme-client,另外一个是os-nginx。acme负责签署证书,而nginx,则负责做反向代理。

自动注册证书

从侧边栏访问“服务-ACME客户端”,默认的设置页面会报错,这时候,需要切换成英文,就能够正常打开页面了。跑去settings页面,打开启用插件和自动更新,应用。剩下的就可以切换回中文了。

下一步,就是创建一个账号,只要填一下邮箱地址,其他默认就行。

下一步是添加一个“挑战类型”,这里其实翻译成“验证类型”会比较好……

由于国内的环境,80和443端口都不用想了,所以只能走dns,具体用哪一家的dns,就根据对应的服务商的文档来配置就行。

下一步是创建一个自动操作,这里选择重启Nginx,这样证书在续签之后会自动重启nginx,并应用新的证书。

然后就是创建一个证书(申请)

注意这里的域名应该这样设计:一个通用域名(example.com),还有其下的通配符域名(*.example.com)。到时候,example.com应该返回一个404;具体对应的系统,则应该放在子域名来访问,例如nextcloud.example.com。另外,所有的应用都应该使用同一个监听端口,除非是由于某些原因,只能使用”流“(stream)代理。如此,可以最大限度地隐藏服务入口。

最后,自动操作里面选择一下刚创建的重启nginx的操作。保存。

保存之后出来可以手动触发一下证书签署,顺利的话就直接拿到一个可以用的证书了。

配置NGINX

OPNsense使得nginx的配置简单的很多,只要点点点就行,而且附加了很多安全方面的设置,有很多值得学习的内容。

创建错误提示页面

为了误导可能的攻击者,我们需要整点花活,因为默认情况下,被策略拦截之后,会向客户端返回一个页面,提醒被OPNsense上的策略拦截了。这可不行,怎么能让对方知道我们用了什么东西的呢对吧。我们来创建一个错误页面,整一个Nginx默认的500错误页面。并且匹配所有的状态码。

这样,无论是什么错误,用户都只能看到一个500的错误。(邪恶)

创建一个默认的服务器

设计的思路在证书那里已经说过了,首先,创建一个默认的服务器,在访问域名不正确的情况下,所有的访问都会跑到这里来:

位置

首先创建一个位置(HTTP(s)-位置),打开高级模式,修改以下的内容,确认保存:

  • 描述:随便填写
  • 网址格式:/
  • 强制HTTPS:勾选
  • honeypot:勾选

这里解释一下这个honeypot,在打开这个参数之后,如果访问了这个位置,就只会返回一个403,并且源地址将会被记录,然后屏蔽。具体屏蔽的时间,可以在“常规设置”的页面,打开高级选项,就可以自定义屏蔽的时间了。

HTTP服务器

然后创建一个服务器(HTTP(s)-HTTP服务器),修改这些内容:

  • HTTP监听地址:空
  • HTTPS监听地址:0.0.0.0:8443(你应该换个别的端口号)
  • TLS证书:(刚签署的那个)
  • 仅HTTPS:勾选
  • 错误页面:刚创建的糊弄人的默认错误页面

配置好DNS之后就可以测试一下是否生效了。尝试访问一下这个服务器,会得到一个空白页。然后在禁止的页面上就能看到这个ip进入了拦截清单了。

调整防火墙策略

最后一步就是调整防火墙策略,新增一个策略,拦截掉这些坏东西的访问:

  • 操作:阻止
  • 源:nginx_autoblock

这样,那些来源不明的访问就会被拦截。

应用保存之后,一个基本的拦截就做好了,攻击者在不知道你有什么域名的情况下,如果访问了OPNsense,就会被关小黑屋,被防火墙拦截,而被防火墙拦截的情况下,其他的端口也会无法访问。

另外,由于我们签署的证书包含2个域名,一个是example.com,另外一个是*.example.com。所以,即便是通过这次的访问,拿到了SSL证书,也不会知道我们用的是什么域名。这就能最大限度地隐藏访问入口。

添加需要暴露的服务器

基础搭建好了之后,就是增加需要通过nginx反向代理的服务了。一共有4个步骤,简单的说法:

  1. 添加一个“上游服务器”
  2. 添加一个“上游”
  3. 添加一个“位置”
  4. 添加一个“HTTP服务器”

上游服务器

需要填写的一共4项,描述、服务器、端口还有优先级。这里特别说明以下,因为设计上,是有多个后端的,所以必须要填上一个优先级。因为一般只有1个后端,所以……随便填一个数字就行。

上游

这里的话,只要填写描述,然后,服务器条目选择刚创建的上游服务器即可。值得注意的是,如果被反代的服务器是使用https的,则需要勾选上“启用TLS(HTTPS)”

位置

位置的话,刚才在创建一个默认的服务器的时候已经讲过了,这次稍有不同的地方,就是有一个额外的选项需要选择,就是“上游服务器”,这里选择刚才创建的“上游”即可。

HTTP服务器

可以参考上面的创建http服务器,和之前的主要差别,只有1个,那就是需要指定一个你自己才知道的属于*.example.com的子域名。由于证书是泛域名证书,所以所有子域名都能够使用。

应用配置

一切搞定之后,点击应用,保存并生效。

最后,在调整完dns之后,你就能用https://private.example.com:8443/来访问你需要暴露的服务了。有多个应用的情况下,重复创建上游服务器、上游、位置、http服务器,即可。

Posted in: OPNsense, 未分类 Tagged: nginx, OPNsense, 反向代理, 安全加固, 自建服务

Mikrotik RB750Gr3优化配置,跑(差点)满千兆

2022年12月24日 by Ferrets Leave a Comment

开篇

故事背景是这样,出租屋那里有一只RB750G r3做出口路由器,之前由于互联网线路是300M的,所以在配置方面,是比较随意,就真把这小东西当成一个能5个口都跑满线速度的路由器来规划接口的链接方式了。

可是,最近由于电信将宽带免费(是的,只要满足月消费多少多少,就免费)提升到1000M下行还有50M的上行,这时候,之前那随心所以的配置方法,就会让这只路由器的转发能力下降。于是我废了相当大的功夫(这文档写的十分隐晦,非常难读懂),进行了一番优化,终于还是能发挥出其全部性能,跑到900M也不是什么大问题。(包含一定的防火墙策略,不是简单的裸奔)

首先,还是上相关资料:

https://mikrotik.com/product/RB750Gr3#fndtn-downloads

https://ewen.mcneill.gen.nz/blog/entry/2018-05-28-mikrotik-750gr3-on-6.42.3/

https://wiki.mikrotik.com/wiki/Manual:Switch_Chip_Features#Bridge_Hardware_Offloading

https://wiki.mikrotik.com/wiki/Manual:Interface/Bridge#Bridge_Hardware_Offloading

这个路由器非常的奇怪,Mikrotik提供了2个block-diagram,具体怎么翻译这个不好说,但从结果来看的话,我觉得可以翻译成“硬件拓扑图”

根据说明,这是禁用了“交换”时候的分布
这个是启用了“交换”时候的硬件分布

根据分布图,明显是启用“交换”的时候,能够发挥最大的性能,1个上行口,其余4个交换,那么对于CPU来说就是1Gb/s入,1Gb/s出,非常合理。

但是要怎么打开这个“交换”呢?产品页面里面没有任何说明……

于是经过一番苦苦搜索,我找到了第二个链接,里面介绍了一位前辈的操作过程,里面提到了一个很重要步骤:

Make sure the bridge is created without spanning tree enabled (ie, no STP/RSTP/MSTP) as the switch chip cannot handle that, and so using those features will force slow software switching. The default mode is RSTP, which will turn off hardware switching on several chipsets, including the RB750Gr3/hEX one.

你的bridge需要关掉STP。哈啊?这玩意不是默认打开的吗?于是我自己看来一下:

我丢,这玩意用的MT7621,由于不支持这些那些功能,所以呢,必须要关掉,否则的话,就会变成内核转发。我想我大概找到问题所在了。

规划

首先,重新规划好端口,按照1上行,4下行的方式划分端口,下行的4个接口都划分到同一个bridge,多子网的情况下,可以用vlan接口或者是做静态路由。

规划过程中有这几点需要注意(仅对于Ros v6有效,Ros v7有改进,可能有更多功能,但是由于是生产环境我暂时还不敢升级):

  • 建议只使用一个bridge,因为只有1个bridge能off-load到硬件
  • 不支持给没vlan标签的包加上vlan标签,即所有access口都只能在同一个vlan,和bridge(无vlan标签)处于同一个子网
  • 不能使用链路聚合
  • 不能使用QinQ

打开“交换”

调整交换机的配置,检查一下多余的功能是否都已经关闭,必要的功能都打开:

  • bridge的protocol-mode必须是none
  • bridge的igmp-snooping必须是no
  • bridge的dhcp-snooping必须是no
  • bridge的vlan-filtering必须是no
  • /interface bridge settings里面allow-fast-path必须是yes
  • /ip settings里面allow-fast-path必须是yes

配置示例

下面是一个示例的命令行:

/interface bridge
add name=local protocol-mode=none vlan-filtering=no
/interface bridge port
add bridge=local interface=ether2
add bridge=local interface=ether3
add bridge=local interface=ether4
add bridge=local interface=ether5
/interface bridge vlan
add bridge=local untagged=local,ether2,ether3,ether4 vlan-ids=1
add bridge=local tagged=local,ether4,ether5 vlan-ids=2
add bridge=local tagged=local,ether4,ether5 vlan-ids=3
/interface vlan
add interface=local name=guest vlan-id=2
add interface=local name=server vlan-id=3
/ip address
add address=192.168.1.1/24 interface=local
add address=192.168.2.1/24 interface=guest
add address=192.168.3.1/24 interface=server

以上是一个简单的示例,创建了一个bridge,2口和3口都是Access模式,划分到一个子网里面。4口是hybrid模式,没有vlan标签的包,会和2、3口处于同一个子网,同时,能够接受带vlan-id=2的包。5口也是Trunk模式,分别接受vlan2和vlan3的包。然后创建了2个vlan接口,“guest”、“server”。然后local、guest、server3个接口都配置了ip地址。

顺利的话,就能在/interface bridge port print里面看到行的开头有个H的标识,代表已经使用了硬件卸载。同时,系统日志里面也会有相关提示。

测速结果

测速结果

J4125的小主机上分了1核心+1G内存的XP,跑了以上的测速结果,期间基本上没其他人同时用网。也基本上差不多了吧。

Ros V7更新

自从RouterOS v7.1rc5之后,MT7621(就是RB750Gr3所使用的CPU/交换芯片),更新了驱动,支持了vlan表,所以,可以给access口的包打标签了。另外的话,也提供了STP的硬件支持。

对比v6的设置,有这么一些不同:

  • bridge的protocol-mode可以是STP/RSTP/MSTP
  • bridge的igmp-snooping必须是no
  • bridge的dhcp-snooping必须是no
  • bridge的vlan-filtering可以是yes
  • /interface bridge settings里面allow-fast-path必须是yes
  • /ip settings里面allow-fast-path必须是yes

配置示例.v7

/interface bridge
add name=local protocol-mode=RSTP vlan-filtering=yes
/interface bridge port
add bridge=local interface=ether2
add bridge=local interface=ether3
add bridge=local interface=ether4
add bridge=local interface=ether5
/interface bridge vlan
add bridge=local tagged=local,ether5 untagged=ether2 vlan-ids=1
add bridge=local tagged=local,ether5 untagged=ether3 vlan-ids=2
add bridge=local tagged=local,ether5 untagged=ether4 vlan-ids=3
/interface vlan
add interface=local name=lan vlan-id=1
add interface=local name=guest vlan-id=2
add interface=local name=server vlan-id=3
/ip address
add address=192.168.1.1/24 interface=lan
add address=192.168.2.1/24 interface=guest
add address=192.168.3.1/24 interface=server

例子中,ether2、ether3、ether4均为access口,ether5为trunk口。划分了3个vlan,分别名字为lan、guest、server。

重点注意

根据观察和mikrotik的论坛报告,系统更新到了Ros V7之后,转发性能有所下降,根据我观察所得,基本上从之前的约800+Mbit/s下降到了600~700Mbit/s,感觉有点难受。

不过偶然间,我发现了一个油管视频:https://www.youtube.com/watch?v=bllvDWEKgNA,还有论坛里面的一些帖子:https://forum.mikrotik.com/viewtopic.php?p=959710#p959710,里面提到,这机器刷了OpenWRT之后,可以打开硬件转发,可以在跑满950+Mbit/s转发的情况下,99% CPU idle。就是说,如果Mikrotik继续开发,是可以将l3hw下放到这个小机器上的。不过……鬼知道要等到什么时候。

Posted in: RouterOS Tagged: fastpath, fasttrack, hardware off-load, Mikrotik, RB750G r3, RouterOS, 硬件卸载

用smartdns来防治DNS污染

2022年7月1日 by Ferrets 1 Comment

一直以来,我对dns查询受到污染的情况一直都比较苦恼。国内的DNS服务器基本上都是受污染的,而通过VPN直接去从国外的DNS服务器查询,则会获得为国外优化的结果,时常莫名奇妙就访问国外的网站,特别是一些有中国版和国际版区别的站点,诸如京东淘宝之流。

今天和在和朋友讨论dns查询的问题的使用,对方提到用tcp来进行dns查询,这就让我感到一些神奇。在拿8.8.8.8来进行过测试之后,我有了一个重大的发现。

使用tcp向8.8.8.8进行dns查询

8.8.8.8的tcp/53端口是开放的!而且有个很重要的特征!对于受屏蔽的域名,dns查询的会话会收到tcp rst导致中断,而未受屏蔽的域名,则可以正常查询。

那好说!只要找到一个DNS转发器,能支持用TCP来进行上行查询的软件就行了(当然,还有一个能用的梯子)。

最开始,我是打算用dnsmasq的按顺序查询,不过dnsmasq似乎不支持tcp查询,不得不放弃。然后又想起另外一个东西叫做smartdns的,能够使用tcp进行dns查询。那就好办。

思路是这样,现调整好vpn的路由。8.8.8.8不走vpn,8.8.4.4走vpn,然后smartdns配置server-tcp 8.8.8.8和server-tcp 8.8.4.4。这种情况下可以同时获得国内优化版和国际优化查询结果,这两者都是未经污染的,无需额外过滤。再由smartdns进行探测,得到访问速度最快的服务器(一般都是国内的)。搞定。

Posted in: 网络 Tagged: DNS, dns污染, smartdns

通过DHCP指定mtu

2021年9月22日 by Ferrets Leave a Comment

起因

家里的Proxmox母机开了VXLAN的SDN,但是由于vxlan隧道需要吃掉几十个字节作为包的头,导致vxlan的子网里面必须将mtu缩小至1450(母机之间互联用的是1500),但是每次开虚拟机就要手动改mtu这个非常的不友好。

在网上搜索手动指定mtu,文章全部都是使用静态的ip地址,在进一步搜索的时候,发现需要修改Linux的dhcpclient配置,在配置文件里面看到,在客户端发送dhcp请求的时候,是包含接口mtu信息的。

这样就有趣了。

那是不是DHCP服务器可以指定客户端的接口mtu呢?那就不需要我一个一个手动修改了。

进行一番搜索之后,果然发现DHCP里面指定了一个option 26,可以定义接口mtu。而RouterOS也支持自定义dhcp options,官方的wiki里面有关于option的写法。

开搞

配置过程中充满了曲折,我尝试在winbox里面添加option,根据教程,我尝试在value里面填入1400,报错,然后尝试填入0x5aa(1450的十六进制值),也不行。然后我发现,填值据然要加上单引号,于是填入‘1450’,过了。

然而事情并不顺利,我在客户端通过DHCP拿到一个奇怪的mtu,43525。当时我就蒙圈了,这啥情况?

于是我胡乱填了更多的值,得到了更多奇奇怪怪大的一批的mtu值。着实搞不明白,然后仔细看了一下winbox中给的rawvalue,看着怎么这么眼熟,好家伙,这不是把字节的顺序给反过来了吗!

本来应该是05 aa,结果变成了 aa 05

我再确认一下整个活

90000转成十六进制实际上是 01 5f 90,结果变成了 90 5f 01

确认之后,就可以根据需要的raw value反推需要填的值。我们需要 05 aa ,就将 aa 05转换成十进制,得出43525,填入之后得到正确的raw value。

得到正确的raw value。

经测试,能够正常获取到1450的mtu。

报告Bug

这明显是有问题啊,我就去给mikrotik提了个请求,得到回复说马上就修。

mikrotik确认了这个故障,说准备修复。

继续阅读官方wiki

后来仔细阅读了一下官方的wiki,里面提到确实可以用0x来输入十六进制的值,也不用用单引号括住。那为啥我输入0x5aa报错?再来一次的时候发现……0x05aa是完全没问题的,但是0x5aa就不行。

开头的0不能省略

看着顺眼多了。后续等官方修复这个Bug之后或许可以换回去’1450’,这样就更直观了。

Posted in: RouterOS Tagged: dhcp, dhcp option, Interface MTU Size, link-mtu, option, option 26, RouterOS

openwrt 国内镜像源

2021年7月11日 by Ferrets Leave a Comment

原文:https://mirrors.tuna.tsinghua.edu.cn/help/openwrt/

由于某些众所周知的原因,openwrt直接从国外源下载的时候通常都会出现缓慢,短线之类的情况。清华大学的同学十分友好地建立了软件源,如此一来,软件的安装就变得友好了很多~

原文可能是由于字符之类的原因导致命令明显的不对,稍作修正,就得到下方的命令:

cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.backup
sed -i 's/downloads.openwrt.org/mirrors.tuna.tsinghua.edu.cn\/openwrt/g' /etc/opkg/distfeeds.conf

完了之后就可以十分愉快地安装软件包了~

Posted in: OpenWrt Tagged: downloads.openwrt.org, mirrors.tuna.tsinghua.edu.cn, OpenWrt, repo, 国内, 清华大学, 软件源

在openwrt路由上运行shairplay作为远程音箱

2020年12月27日 by Ferrets Leave a Comment

参考:

  1. https://blog.csdn.net/luotong86/article/details/53207387
  2. https://zhuanlan.zhihu.com/p/103121214

因为手里空闲着一条漫步者的M16,现在我又用着iPhone,就想尝试一下airplay,没想道意外的简单,这里做个简单的记录。

首先,使用opkg更新软件包缓存

opkg update

然后,安装kmod-usb-audio:

opkg install kmod-usb-audio

这将安装usb声卡的驱动,如无意外,就可以看到/dev/audio的出现,这意味着系统能够正常识别到声卡。如果没认出来,那可能是系统尚不支持声卡,推荐换一只,毕竟重新移植驱动这种事情还是比较麻烦的,如果官方没有Linux驱动那就更没希望了。

下一步就是安装shairplay:同样非常简单,因为有对应的luci管理界面,顺便装上。

opkg install luci-app-shairplay

接着就可以去网页进行管理了:

这里只要简单的修改一下Airport Name,AO Driver选择alsa,然后勾选上enabled,保存并应用即可。

下一步就能在播放器上选择Airport后,点击播放就能听到音箱响起来啦~

Posted in: OpenWrt Tagged: Airplay, Luci, OpenWrt, Shairplay, 音乐

RouterOS上抵挡扫描的防火墙策略

2020年10月4日 by Ferrets Leave a Comment

背景

因为家里的宽带是找电信要了公网IP地址的,所以互联网可以直接访问到我作为出口的RouterOS,而众所周知,互联网上扫描机不知何几,被盯上了的话也是一件相当麻烦的事。

起因

之前在玩RouterOS上的防火墙的时候,发现有一个动作,叫做“add src to address list”,能够将包的源地址添加到某个列表中。俺寻思了一下,发现这能够很好的抵挡扫描机,思路是这样的:

防火墙策略

建立防火墙策略,指定一些经常被扫描的目的端口,然后,防火墙的动作是将包的源地址添加到一个叫做sniffer的地址列表中,设定有效时间为30天,然后,让防火墙直接丢弃来自这些地址的包,这样如果某个机器尝试扫描我的出口,触发了这个机制,那这个机器就会直接被ban掉30天。

命令行的话,添加起来是这样的:

/ip firewall filter add action=drop chain=input comment="drop sniffer" in-interface=China-Telecom src-address-list=sniffer
/ip firewall filter add action=add-src-to-address-list address-list=sniffer address-list-timeout=30d chain=input comment="mark sniffer" dst-port=22,23,876,3306,3389,137,139,445,5001,6379,27017 in-interface=China-Telecom log=yes log-prefix=sniffer protocol=tcp
/ip firewall filter add action=add-src-to-address-list address-list=sniffer address-list-timeout=30d chain=input comment="mark sniffer" dst-port=22,23,876,3306,3389,137,139,445,5001,6379,27017 in-interface=China-Telecom log=yes log-prefix=sniffer protocol=udp
/ip firewall filter add action=add-src-to-address-list address-list=sniffer address-list-timeout=30d chain=input comment="mark sniffer" dst-port=2323,5555,80,81,37215,8000,8080,8081,8291,8443,53 in-interface=China-Telecom log=yes log-prefix=sniffer protocol=tcp
/ip firewall filter add action=add-src-to-address-list address-list=sniffer address-list-timeout=30d chain=input comment="mark sniffer" dst-port=2323,5555,80,81,37215,8000,8080,8081,8291,8443 in-interface=China-Telecom log=yes log-prefix=sniffer protocol=udp
/ip firewall filter add action=drop chain=input comment="drop sniffer" in-interface=China-Telecom src-address-list=sniffer

然后放着一阵子,就会在address list里面看到大量的IP地址。

继续改进

如果想要更加全面的保护,可以选择在防火墙上添加允许一些正常的策略,比如说,允许每秒不超过20个echo-request的icmp包啊之类的,然后在防火墙的末尾,加一条策略,将其他未知的包,都当作扫描机处理,一律有杀错无放过。

但是有时候,ban了对方的ip,也就意味着无法访问对方的IP地址,因为回包会被防火墙丢弃。这时候就要额外的添加一条策略,插在丢弃sniffer的策略的前面:

action是accept就可以了。这样如果是主动对外访问的话,回的包要么是related,要么是established,这样就可以正常访问被ban掉的ip。至于说udp访问可能没有这个状态标记……先暂时忽略吧,出现问题再继续改进。

Posted in: RouterOS Tagged: anti-sniffer, firewall, Mikrotik, RouterOS, 防扫描, 防火墙

Windows Server作为Mikrotik设备管理员的3A服务器

2020年7月6日 by Ferrets Leave a Comment

在使用了Mikrotik的RouterOS作为出口路由使用了相当一段时间之后,我彻底成为了ROS的粉丝,现在手里有一个x86的小机和一直RB750Gr3分别在家里和出租屋做出口路由。

虽然设备不多,管理员也就我一个,根本没有3A什么的出场的机会,只不过嘛,生命在于折腾,研究研究不是也很好嘛。

安装NAPS服务器并配置

首先,安装网络访问策略服务器(NAPS),这可以用来作为Radius服务器。通过服务器管理器添加角色与功能,一路下一步,在角色一页勾选上“网络策略与访问服务”,然后继续下一步直至安装完毕为止。我因为懒得卸掉重装,后面的就没继续截图了。

  • 添加角色与功能
  • 没啥的,下一步
  • 直接下一步
  • 选择服务器
  • 勾选“网络策略与访问服务”

安装完NPS之后,就可以开始配置。当然,首先,是添加用户组,并将用户添加到组,顺便确认一下用户的拨入属性由NAPS控制。

  • MikrotikAdmin用户组
  • 把用户添加到组
  • 用户的拨入属性由NAPS指定

然后,去网络策略服务器,添加radius客户端。允许ROS使用NPS作为radius服务器。IP地址写ROS使用的源地址,机密随意只要和ROS设备上一样即可。

  • 打开网络策略服务器
  • 添加Radius客户端

下一步是新建网络策略,填写策略名称之后,服务类型选择未指定。

  • 填写用户组

然后下一步里面,指定匹配那个Mikrotik管理员组;这时候可以限定NAS标识符或者限定被叫站ID(前者默认是ROS的system identity,后者默认是radius客户端的IP地址)。

  • 指定条件
  • 指定用户组
  • 只匹配MikrotikAdmin用户组
  • 限定NAS标识符
  • 匹配-Mikrotik-
  • 指定条件

选择匹配策略的授权访问。至于身份验证方法,暂时知道ROS使用的mschapv2,以后会不会改就不知道了。至于约束,默认下一步。

  • 选择授权访问
  • 认证方法
  • 指定约束

到了配置设置的一步,把默认的两个标准删掉,手动添加Service-Type,值为Login,虽然默认的似乎也能用。

  • 添加属性“Service-Type”,类型为Login
  • 只保留一个

然后就是精华所在:在“供应商特定”一项里面,手动添加一个属性,属性是Vendor-Specific,添加。添加一个属性,供应商为“14988”,符合RFC规格,然后配置属性。供应商分配的属性号为3,属性格式为字符串,属性值就是用户组的名字。系统默认最高权限的组的名字是full,我这里填的就是full。

  • 选择Vendor-Specific
  • 添加指定属性

然后禁用BAP(因为感觉没什么乱用,似乎不禁用也行),下一步,完成。Windows Server这边就OK了。

  • 引用BAP
  • 保存

配置ROS

首先,选好ROS的系统名称,保证能够匹配到NAPS上的那个过滤策略。

然后,在ROS上配置Radius客户端。Service选择login就行,address填NAPS的地址,Secret就是刚才在NAPS添加Radius客户端的机密,同时,建议指定一下源地址,特别是ROS有多个接口IP地址的时候。

下一步,在system-users中启用AAA登录,Default Group选择最低权限的一个,那就行了。

最后验证一下,大功告成!

Posted in: 网络, 自建服务 Tagged: Mikrotik, NAPS, radius, ROS, RouterOS, User Group, windows server

使用PXE从NFS服务器启动Debian Linux

2018年12月2日 by Ferrets Leave a Comment

一、开篇

首先,我使用的是debian的linux,版本是stretch,其他发行版的话只能作为参考,无法照搬。

然后上参考:https://blog.csdn.net/politefish/article/details/4444417

在网上搜无盘系统,全部都是指导怎么启动安装器的,这个我之前已经做过了,没什么问题,但是如何做一个能直接运行的linux,倒还是第一次。上边这边文章里面洋洋撒撒一大串,不过还是指引了我找到了比较核心的内容。

二、组件部署

首先PXE启动系统我这边就不说了,参考有很多,比如说这个、这个,还有这个。总所周之,PXE启动linux需要3个组件,一个DHCP服务器,一个tftp服务器,还有一个NFS服务器。因为我家的路由器系统都比较的有好,DHCP服务器方面都支持设置PXE的引导,所以不需要额外的架设一个DHCP服务器。

tftp服务器和NFS服务器我是使用我家的一台QNAP的NAS来做的,性能和整合度不错,由于是同一份文件的不同共享,所以就不需要每次更新了kernel之后还需要单独将kernel拷贝到tftp服务器去了。

 

首先是tftp服务器,先把tftp服务器开起来,指向目标,限制好来源

然后参考这个,把所需的文件放到目标

看起来像是这样:

PXE
├── debian
│ └── #这里放Debian的系统
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vesamenu.c32

再然后就是NFS系统,在系统中调整NFS分享,让/PXE能够以NFS的形式挂载,这就可以了,如何建立NFS服务器并且建立共享,这里不多说。

三、系统安装

然后先安装好基本系统,再回来修改default的配置文件

参考了网上搜出来的文章,我发现他用的方法就是使用debootstrap来安装系统。嗯?看着眼熟,不就是我当年做过的事情吗?哎呀,这就容易了嘛。

这里我选择的方法是用containerstation跑个LXC容器,将文件夹挂载到容器中。如果手边只有windows的机器,可以选择上虚拟机,然后挂载NFS共享。

假设将目标挂载到/mnt,就可以使用这样的方式来安装基本的debian系统

 

debootstrap –arch=amd64 stretch /mnt/ http://ftp.cn.debian.org/debian/

然后稍作等待,你就获得了一个debian系统了。当然,推荐使用同一个架构的CPU,因为这样接下来的后续安装就会方便很多。

chroot到新系统之后就可以向刚安装的系统一样去做后期的调整了。注意至少有一下这么几个

1.修改root的密码

2.新增用户

以下几个我是当时做了的配置但看起来并不是必须的,酌情参考

3.修改fstab和mtab,详细看参考链接,但是我登录系统之后看mount表完全不是那么一回事

4.配置网络,参考链接里面还是用的eth0,但是我登录系统后看到的接口都不是eth0而是en0了,又是一个过期的文档

5.调整时区,这个最好做一下,还有用timedatectl set-local-rtc 1 设置将RTC时钟设为本地时间而不是UTC时间,避免和windows来回切的时候导致windows时间混乱

然后把你想安装的东西都安装上。duang,系统就安装好了。

四、调整PXE启动配置

最后回来调整一下PXE的启动文件,这里是最精华的地方:

DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE Home PXE-Boot Server
label Diskless Debian
MENU LABEL Diskless Debian
KERNEL debian/vmlinuz
append vga=normal initrd=debian/initrd.img ramdisk_size=14332 root=/dev/nfs nfsroot=NFS服务器地址:/PXE/debian rw --
TEXT HELP
Starts the Diskless Debian
ENDTEXT

需要注意的是,这里是系统的根目录下存在两个指向boot的链接,所以kernel和initrd才是这个位置,至于其他的参数,我暂时还没了解到如何使用,先保留着,看以后是否再需要优化。

配置完成后,就可以启动主机,然后选择从LAN启动了,启动之后,可以看到根目录是从nfs服务器挂载的。

 

Posted in: Linux, 网络 Tagged: Debian, dhcp, Linux, nfs, pxe, pxelinux.cfg, tftp

在使用动态ip的情况下使用tunnelbroker

2017年4月13日 by Ferrets Leave a Comment

最近我家不知为啥,pppoe拨号基本上每天晚上都会断一次,而重连之后由于ip地址变更,6to4的tunnel就中断了,一次两次就算了,每天都一次的话就不能靠手动,等靠自动化来维护。

参考:

https://wiki.mikrotik.com/wiki/Manual:Scripting-examples

https://gist.github.com/pklaus/960672

最开始是打算看看RouterOS能不能在接口启动之后触发运行一次脚本,但是ppp的profile里面的那个up down的scripts触发并没有效果(或许是我用法不对?)于是只能换一种思路,定时检查ip有没有变更,如果变更了,就触发一次配置更新。

两个脚本大概是这样:

脚本check_ip_change:检查ip有没有出现变更:

:global currentIP;
:local newIP [/ip address get [find interface="wan"] address];
:if ($newIP != $currentIP) do={
 /system script run update_sit;
 :set currentIP $newIP;
}

脚本update_sit:执行更新interface属性以及向tunnelbroker通知客户端节点地址变更:

local ipaddr
local users "someuser"
local key "somekey"
local tunnelid "sometunnelid"
:set ipaddr [/ip address get [/ip address find interface=wan] address]
:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]
/interface 6to4 set sit1 local-address=$ipaddr
/tool fetch url="https://$users:[email protected]/nic/update?hostname=$tunnelid&myip=$ipaddr" mode=https keep-result=no

然后定制每分钟执行一次check_ip_change,然后在下次ip地址变更之后,就可以在1分钟内完成自动修复了。

Posted in: RouterOS Tagged: dynamic ip, ipv6, Mikrotik, RouterOS, tunnelbroker, 动态ip
1 2 … 8 下一页 »

搜索站点

日历

2023年 1月
一二三四五六日
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
« 12月    

分类

  • Android
  • docker
  • Linux
  • OpenWrt
  • OPNsense
  • Proxmox
  • RaspberryPi
  • RouterOS
  • Windows
  • 吐槽
  • 未分类
  • 生活
  • 网络
  • 自建服务

近期文章

  • 使用OPNsense来保护内网的服务
  • Mikrotik RB750Gr3优化配置,跑(差点)满千兆
  • 用smartdns来防治DNS污染
  • Proxmox中LXC容器中docker调用宿主机的显卡加速
  • Linux上iptables端口触发拦截
  • 通过DHCP指定mtu
  • openwrt 国内镜像源
  • 为RDP启用显卡加速,提升远程桌面效果
  • 为proxmox启用intel核显的虚拟化
  • windows无法解析域名

友链

  • ntzyz's space
  • Openwrt中文论坛
  • SNGR
  • Trevikids行止由心
  • 煎蛋

归档

管理

  • 登录
  • 条目feed
  • 评论feed
  • WordPress.org

Copyright © 2023 Ferrets家的Wordpress.

Omega WordPress Theme by ThemeHall

 

正在加载评论...