数码之家

 找回密码
 立即注册
搜索
查看: 21789|回复: 31

软路由(1)之opnsense

[复制链接]
发表于 2020-6-8 12:38:30 | 显示全部楼层 |阅读模式
本帖最后由 Meise 于 2020-6-8 12:43 编辑

相信玩了很久路由器之后的小伙伴,都开始嫌弃家用成品路由器了。
本人也是一个扯淡的玩家,家里仅仅有100M的电信宽带,倒是折腾了好几个路由器了,一开始买洋垃圾路由器(westell verzion等)

到手新鲜,最后发现被老外玩剩下的东东,早已经失去了该有的韵味了:loveliness:

再后来开始折腾mikrotik-ros路由器,用winbox来配置,相当的头疼,很多规则都需要自己先学习再配置。这些是后话,哪天有时间一定好好唠唠。
再后来,不满足于家庭桌面路由器的功能和安全(其实就是自己杞人忧天)

看着企业路由器直流口水,但是口袋不争气, 于是乎开始了一个漫长的x86系列的软路由之旅。

海蜘蛛--爱快---ros--linux(iptables)--ddwrt(x86)--openwrt(x86)-m0n0wall---pfsense---opnsense

今天说的就是 opnsense
它一开始是基于pfsense的一个扩展,后来干脆自己独立出来了,据说重写了很多代码,只保留一部分pfsense
unix系统---〉freebsd:号称很安全稳定的系统,诸如烂苹果和游戏机psp都是基于它。
opnsense也是基于freebsd的一款开源防火墙+路由器


先看看截图:




几乎企业路由器该有的功能都有了。
支持多wan,无线网卡组建商业的wifi!,限速,*P*,vlan等等
防火墙规则一堆,这里我给新手提个醒,很多规则里的出口入口,都不是咱们想的那样,我以前也有误解,现在理解应该是这样:

客户pc-----------路由器an口----虚拟交换机------wan口------光猫桥接------isp

从光猫外面的数据进入路由器的通常叫入口
从路由器lan口出来到客户pc的通常叫出口

一般路由器防火墙规则都是限制在wan口处
限速则是在lan口的处

诸如linux的iptable一样道理
nat 又分为snat dnat,端口影射在snat上的规则比较多,dnat主要是把出口端口进行规则限制

这个阮路由的配置需要保持一颗追求少女的心态去面对,要不断探索,不断更改,切不可着急上火。



各种数据统计一目了然,这些东西,恐怕openwrt系列的软路由是做不到的

本人就是折腾,家庭环境搞这个纯属爱好。
现在是成功获取ipv6地址,大概有几千个,这也验证了某些人的话,那怕是地球上的沙子,都可以分到一个公网的ipv6地址。

说说硬件吧:
4年前在某宝玩耍,看见一个mini主板  intel dq77kb 1155针的 自带双千兆网卡,当时没有想到后来会涨价到500+,早知道就多来几套了
当时花了198搞了一套 ,配合低功耗的G2020T,加了一个16g 固态,玩起来还是不错的



有没有一种冲动,想尝试一下?
opnsense 地址:https://opnsense.org/
国内玩这个的很少应该。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 3家元 +51 收起 理由
jtcat + 11 謝謝分享
msi12 + 10 原創內容
家睦 + 30

查看全部打赏

发表于 2020-6-8 17:40:19 | 显示全部楼层
原来老子一直追不到女人就是这种原因。。。
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-8 18:06:41 | 显示全部楼层
出入口好像不是这么理解的。
我们不是专业人员,暂且这样称呼:
数据进入网关称为入站,进入的接口,称为入口;
所以数据从PC进入网关(路由再离开网关出去互联网)的、数据从互联网进入网关(经过路由再出来流向PC),都是入口、数据从PC进入网关,又从网关进入另一个本地PC的地方,也是入口。而不是仅仅从互联网进来的才叫入口。更不是WAN和LAN来区分。WAN和LAN都经过入口,数据流向由网关根据数据的性质来导向。
数据从网关离开进入互联网的地方,称为出口。但是数据从PC进入网关,又出来进入另一个本地PC,却不经过出口,因为数据不经过转发。
出入口不是实体的网口,是一个虚拟层面的数据接口。

亦即是:凡是进入网关的数据都经过入口,不管外网还是内网来的;凡是离开网关进入外网的数据都经过出口;凡是从内网到相同内网的数据,都经过入口却不经过出口。

打赏

参与人数 2家元 +34 收起 理由
fengchen_mdc + 4 我觉得是网口相对于cpu来讲,可以看看iptab.
wuxiandianzi + 30 专业

查看全部打赏

回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2020-6-9 08:10:24 | 显示全部楼层
wulishui 发表于 2020-6-8 18:06
出入口好像不是这么理解的。
我们不是专业人员,暂且这样称呼:
数据进入网关称为入站,进入的接口,称为入 ...

哈哈,朋友的执着回复让我没有一点反驳的余地,佩服。
咱们抛开专业而谈,在业余玩家的立场上把复杂抽象的术语统统忽略,不知道朋友在linux系统的iptables方面是否有高见?
确实如你而讲,单纯看数据走向严格上进口入口对应的接口可以细分很多,但是在配置防火墙规则上,大多数的防火墙规则都是在wan侧的进出口做出的限制,就如ros路由器系统的很多规则也是这样,我曾经在iptables的input/output/FORWARD/PREROUTING  在dport和sport 配置上伤透了心,这也就是后来干脆找个方式让自己理解的,如果朋友有更好的更能明确裂解的方法,我洗耳恭听。一路走来,不知道是我错了,还是理解偏差,我发现照自己理解那样反而更好的写规则,经过试验,得到了想要的结果。
我感觉业余玩家,站在比较远的角度强制让自己那么主观的定义可以更好的理解,毕竟抽象的层面需要专业的知识来解释,那就离开业余层面了。
代码方面就比如iptables的限制一句话说不清,而在opnsense配置方面,不需要看代码结构,直接在web上可视化的配置,完全可以如我所说,就单纯把wan口流入的数据看成inpass,相应把从lan口流出的数据看成outpass,这样门槛更低,朋友的讲述一点问题没有,但是新手在opnsense上,入门就需要那么复杂的理解,肯定有很大困惑。

谢谢朋友的指教!
回复 支持 反对

使用道具 举报

发表于 2020-6-9 23:14:48 | 显示全部楼层
以前还有一个m0n0wall,好像更新的比较慢,现在很少有人用了。都喜欢用傻瓜级的爱快等。
回复 支持 反对

使用道具 举报

发表于 2020-6-10 09:50:49 | 显示全部楼层
wuxiandianzi 发表于 2020-6-9 08:10
哈哈,朋友的执着回复让我没有一点反驳的余地,佩服。
咱们抛开专业而谈,在业余玩家的立场上把复杂抽象 ...

从网口到cpu(内核),正向为input,反向为output,从一个口进另一个口出为forward
dport目的端口,sport源端口
回复 支持 反对

使用道具 举报

发表于 2020-6-10 12:38:18 | 显示全部楼层
本帖最后由 wulishui 于 2020-6-10 13:15 编辑
fengchen_mdc 发表于 2020-6-10 09:50
从网口到cpu(内核),正向为input,反向为output,从一个口进另一个口出为forward
dport目的端口,sport ...

网口到cpu那叫做“接口”,数据流是双向的,没有一个口进一个口出的做法,是属于另一个层面的概念。和入口出口毛关系都没有。
入口出口是属于iptables或其他什么tables的叫法。不仅仅只有iptables一种。
但在iptables,凡是进来的数据都经过input(即“入口”)。无论外网还是内网数据,在input上drop的话都生效。
只有一个入口一个出口,哪有什么一个口进另一个口出!只有内网到外网的数据才经过forward,内网到内网的数据不经过forward。你要是不明白,直接在内网传文件,iptables -L -nv看看forward有无流量!并且,你在forward或output上drop看看能不能drop掉!
在iptables上就是这样:凡是进入网关的数据都经过入口,不管外网还是内网来的;凡是离开网关进入外网的数据都经过出口;凡是从内网到相同内网的数据,都经过入口却不经过出口。
所有数据,在input上drop都有效;内网至外网数据,在input、forward、output上drop都有效;内网至内网的数据,只在input上drop有效(因为不经过forward或output)。

我虽不是专业人员,但我在openwrt上写了七八个插件了,基本上都和iptables有关,而且专钻牛角尖,做别人没有的插件,功能史上独一无二的:https://www.right.com.cn/forum/thread-928319-1-2.html
入口出口不是硬存在的,也不是单独分出来一个进一个出,入或出指的是数据流向,不是洞口。之所以叫做入口出口,只是将一个无限烧脑无形无象无色无味、让人脑细胞错乱抽象的“东西”用实体化的词来形容,看起来易懂一些。网关内部数据满天飞,就好像太空中的垃圾一样,哪里能做入口出口两个狗洞让它们钻。该怎么走向由路由规则去管理,去哪里的数据就装到哪个箩筐里扔到哪个地方,由外面的人来抬走,但是抬进来和扔出去的门口都是一个的,只有扔的方向的区别。就和你镇上的快递站差不多,发件取件都是那个门口,哪里还专门开一个入口一个出口给你。发件叫做入站,派件叫做出站,只是方向性的区别,都是那个门口。而两个人约定在那里交换包裹,那么只用入站,不出站,因为不用派件或发件,只需要跟站长说一声就行,这就是内网数据交换不经过forward,也不用output。

回复 支持 反对

使用道具 举报

发表于 2020-6-10 13:36:02 | 显示全部楼层
本帖最后由 wulishui 于 2020-6-10 13:43 编辑

用快递站形容再形象不过了:
上级下发的件、用户发送的件,都需要“入站”登记,这个途径称之为“入口”。
站点里面的件到底需要上传给上级还是派送本地,由包裹上的标记来触动相关的规则。
用户发送的件,都需要上传到上级,这个途径称之为“出口”。
而用户约定送件到站点,让另一个人拿走,那么只用“入口”登记,不用派送也不用上传,所以没有“出口”。
“入口”、“出口”是站在站点内部管理者角度叫的,而不是站在你们用户角度叫的。而入口出口这实际上是一种方向性行为,不是设立的两个“洞口”,这只是他们站长用这两个词来叫而已。
网关内部就是这个站点内部。实际上它整个系统只有一个“门口”。它并没有设计“入口”、“出口”两个门口。

打赏

参与人数 1家元 +20 收起 理由
wuxiandianzi + 20 这个形容比较贴切

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 22:45:14 | 显示全部楼层
回楼上:
这里用一个简单的图表示下,虽然不正确,就委屈下了。
目前大部分家庭用户都是用路由器的pppoe拨号,然后采用nat方式分享上网,不知道朋友说的这种情况是否适用局端dhcp模式呢?就是局端直接分配给客户端公网ip(假设局端没有采用nat)
假设路由器包括 wan ------cpu(内核)------lan 三种粗略的部门
如果内网用户没有主动发起访问外网(图上蓝色),仅仅是外面的数据要访问内网(只讨论第一次数据,不包含建立连接的往返过程),那么这个是不是FORWARD? 常说的端口映射不是这个么?
如果内网用户主动访问外网(图上绿色),似乎不是单纯的forward,数据在内核处理前后,是不是对应有forward和postrouting两个过程?
如果内网用户访问内网(图上红色),真的不经过forward吗? 还是经过了,内核压根不处理这种数据?


我也是业余玩家,我认为iptables仅仅是个代理工具,目的就是方便人类去配置机器代码,真正处理这些的应该是内核部分的功能,以前读过内核关于这个的东西,好像是什么netfilter。这就导致表面上对input数据进行drop而有效果,实际内部代码把所有相对“进入”的数据都处理了。
我赞成朋友把这个过程比喻为快递,虽然路由器上有wan和lan口,实际上确实是一个洞,洞里的数据有进有出,相对来说是不是可以形容为wan进 经过内核数据处理后从lan出?
然后用户数据从lan入 经过内核处理数据后 又从wan出呢?
进和出都是相对说的,一条公路,具备双向车道而已。公路一头是wan口,一头是lan口,中间有个虚拟抽象的处理中心。


我一直主观认为dnat是管理用户数据 从lan入 到 wan出这个过程,而snat 恰好相反的这个过程,一旦建立连接后既有dnat又有snat了。
而描述处理中心的行为是不是PREROUTING、FORWARD、POSTROUTING这3种呢?处理动作有方向性,分为OUTPUT,INPUT呢? 处理方法又分为ACCEPT,DROP,REJECT 等呢
这种偏书面的东西,有时隔一阵子就会混乱,还期待朋友给详细讲解下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-10 22:49:12 | 显示全部楼层
wulishui 发表于 2020-6-10 12:38
网口到cpu那叫做“接口”,数据流是双向的,没有一个口进一个口出的做法,是属于另一个层面的概念。和入口 ...

我说的入口是通讯发起端,出口是通讯接收端
内网数据不用forward是因为在交换芯片上或者网桥上,况且网桥上的两个设备间还能用ebtables的forward控制
你看看不同网段的两个lan端ip间要不要forward
回复 支持 反对

使用道具 举报

发表于 2020-6-11 12:03:31 | 显示全部楼层
另外英文语言版有入或出,没有入“口”出“口”,翻译成中文就成了入口出口,本来说的是数据两个流向,到了中国人眼里就成了出入两个洞口,九唔搭八。
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-11 12:19:26 | 显示全部楼层
本帖最后由 wulishui 于 2020-6-11 12:33 编辑
fengchen_mdc 发表于 2020-6-10 22:49
我说的入口是通讯发起端,出口是通讯接收端
内网数据不用forward是因为在交换芯片上或者网桥上,况且网桥 ...

说明一下,所说的内网指的是同网段,即最单纯的路由结构。另外说明,说的是iptables,不是ebtables或者nftables。iptables也没有接收端发送端之分,只有数据流向。因为iptables处在数据链的中间环节,只管数据的处理,不管收据的收发。所谓的数据收发端,很明显这不在iptables范畴。数据收发接口那边的事情。换句话说,iptables就像路中间的交警,他只管把路过的车拦下来看看、给你车登记、贴标签、开罚单,如果有指令,他也可以查你车是那条道上来,要到哪里去,引导你怎么受处理,但是他才不管在公寓门口把大爷您扶上车,在餐厅门口把大小姐送送进包厢。
如要非要执拗,母牛都可以有屌,看你想不想它有或者你是不是认为它有。
iptables数据有出和入两种方向,完全就没有“口”,所谓的口是国人翻译过来的,望文生义以为是两个门口。
回复 支持 反对

使用道具 举报

发表于 2020-6-11 18:26:43 来自手机浏览器 | 显示全部楼层
wulishui 发表于 2020-6-11 12:19
说明一下,所说的内网指的是同网段,即最单纯的路由结构。另外说明,说的是iptables,不是ebtables或者nft ...

那么请解释-i 和 -o参数是干什么的
回复 支持 反对

使用道具 举报

发表于 2020-6-11 18:38:18 | 显示全部楼层
tigerzq 发表于 2020-6-9 23:14
以前还有一个m0n0wall,好像更新的比较慢,现在很少有人用了。都喜欢用傻瓜级的爱快等。 ...

M0N0WALL 是中国搞的,关站了。真正的MONOWALL还在,只是用的用少了。它是路由,侧重点不同
回复 支持 反对

使用道具 举报

发表于 2020-6-14 10:04:16 | 显示全部楼层
本帖最后由 skyplayer 于 2020-6-14 10:05 编辑

m0n0wall的并发连接数还是可以的,但是到了百兆宽带以上,就不太好使了。之前买的WVR300,TP的企业版,标称跑20M,的确没压力,它的极限值是38M,所以上到50M以上的宽带时,基本上就没什么卵用。
用的时候一直好,换代闲置下来时,居然放坏了。。。
回复 支持 反对

使用道具 举报

发表于 2020-6-15 15:25:05 | 显示全部楼层
只玩过  ros 和 天融信
回复 支持 反对

使用道具 举报

发表于 2020-6-16 06:57:18 | 显示全部楼层
这方面知识太少!学习中。。。
回复 支持 反对

使用道具 举报

发表于 2020-6-17 02:08:18 | 显示全部楼层
我觉得RouterOS这个图可以解释不少,就是不知道在其他系统上是否相同

https://wiki.mikrotik.com/wiki/Manual:Packet_Flow


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +10 收起 理由
wuxiandianzi + 10 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-6-21 10:08:02 | 显示全部楼层
还是傻瓜的爱快,或者OPENWRT(变种),其它玩起来累。
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 11:26 , Processed in 0.218401 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表