2025-03-05 22:40:00
最近,我的朋友决定踏上了独立开发者的道路,做了一个临时邮箱网站:tempmail100.com。作为一个旁观者,我亲眼见证了他从零开始,一步步摸索,最终取得了广告日入$10的成绩。今天,我想分享一下他的经历,希望能给那些想要踏入独立开发者行业的朋友一些启发。
朋友的初衷很简单:做一个实用的临时邮箱工具,帮助用户在不暴露真实邮箱的情况下,快速注册一些临时服务。他选择了临时邮箱这个方向,主要是因为市场需求明确,且技术门槛相对较低。
他花了几周时间,从设计到开发,最终上线了tempmail100.com。网站的页面设计非常简洁,用户体验也很流畅,尤其是那个“一键生成邮箱”的功能,简直不要太方便。
作为一个独立开发者,朋友在技术选型上非常务实。他选择了轻量级的技术栈,确保网站能够快速响应,并且易于维护。同时,为了提升网站的SEO表现,他做了以下几件事:
为了让网站能够持续运营,朋友决定引入Stripe作为收款工具。为了接入Stripe,他甚至注册了一家美国公司!虽然这个过程有些复杂,但最终他成功接入了Stripe,用户可以通过付费解锁一些高级功能,比如更长的邮箱有效期、自定义邮箱前缀等。虽然目前付费用户还不多,但这为他提供了一个稳定的收入来源。
此外,他还通过Google AdSense在网站上投放广告。随着流量的增加,广告收入也逐渐提升,最近甚至达到了日入$10的成绩。虽然这个数字看起来不大,但对于一个刚刚起步的独立开发者来说,已经是一个不错的开始了。
当然,独立开发者的道路并不总是一帆风顺。朋友也遇到了一些挑战,比如如何持续吸引新用户、如何应对竞争对手等。但他始终保持乐观,不断优化产品,提升用户体验。
未来,他计划继续完善网站功能,比如增加多语言支持、提升邮箱的稳定性等。同时,他也希望通过更多的SEO优化和社交媒体推广,进一步提升网站的知名度和流量。
如果你也想要踏入独立开发者的行业,朋友的建议是:
朋友的经历让我深刻体会到,独立开发者虽然充满挑战,但也充满了可能性。如果你也有类似的想法,不妨大胆尝试,或许下一个成功的独立开发者就是你!
如果你对tempmail100.com感兴趣,或者有任何关于独立开发的问题,欢迎在评论区交流。我们一起探讨,一起进步!
本文链接:https://deepzz.com/post/indie-maker-tempmail100.html,参与评论 »
2025-01-01 10:49:00
2025年啦,大家过得都可还好?
时间转瞬即逝,2024年就过完了,不得不感叹一年时间还是蛮短暂的!
回顾2024:
2024骑着第一辆公路车参加了2023的跨年骑行,千人规模很是壮观,以后是再也不会有了。
2024组装了第一台真正意义上的NAS,五盘位,8T,结合Apple TV该享受的还是要享受。
2024学习了swift与swiftui,与朋友空闲时间开发了一款临时邮箱应用,突破了独开零收入门槛。
2024读了6本书,远未达到最初设定的10本书的目标,看来执行力还是差了些。
2024为小朋友组装了一个大玩具:水管攀爬架,挺爱玩,大运动好了不少。
2024总共骑行了400来公里,都没别人跑步跑得多,看来还得找个骑行搭子。
2024开始关注保险,为家人安排了重疾险,寿险。
2024房贷利率降低了不少,还贷压力也有部分减轻,但依旧是个重担。
2024不少地方发生战争,如乌克兰俄罗斯,还有各种事故,只能说珍惜当下,天灾还是人祸不知道哪一个先来。
2024特朗普竞选总统成功,币圈高涨,可惜没能抓住,错失成为首富的机会。
2024陪着我的小家伙又成长了一年,每次看到他的笑容,喊着爸爸,心里都是感动。
2024家里第一次开了地暖,室内外温差十几二十度,家里真的是舒服。
2024奶奶九十大寿,真的是儿孙满堂,实实在在的印证了家有一老,如有一宝。
2024工作平稳,但有个盼头,来年努力为公司输出,一同成长。
2025愿世界和平,愿家人安康,愿陌生的你快乐幸福,愿风调雨顺!
2024-01-01 22:49:00
该篇总结是我第一次严格意义上的年终总结,也到了必须要进行总结的时候。总结经验,反思过往!
相较于以往,每年的这个时候都会看到很多人在对自己进行总结。对于自己,是一个性格比较随意的一个人,总结不总结的也无所谓,只要内心对自己有要求,有思考就行。但对于很多事和物,没有纸笔的记录很快就会忘却,2023年对于我来说是挺焦虑的一年,希望记录下对这些事情,以作反省。
先说说自己,性格是一个比较独立的一个人,不想去处理那些复杂的人际关系,不喜欢,也是浪费时间(当然这肯定是不对的,大家不要学我)。简简单单的就挺好,没有利益,没有冲突,有兴趣的就一块玩,没有的我们下次找机会。平时个人想法也挺多的,就是执行力需要提高。
从标题可以反映出我2023焦虑的一年,可以从工作上和生活中来进行总结。
我目前在一家安全相关的公司从事产品研发的工作,公司不大但老板有技术背景,对技术比较看重。当时过去主要工作内容是数字身份产品的研发(以创业的心态),包括IDaaS平台(OAuth2/OIDC,SAML,LDAP等)、无密码身份认证(WebAuthn/FIDO2)、协同签名和S/MIME相关的产品。
由于各种原因吧,如产品方向和研发方案,经过3年的产品研发,最终的产出很少或者说没有应用场景。个人挺苦恼的,毕竟作为研发研发出没有产生价值的产品真的很没有成就感,产品没价值就代表研发没价值。
2023最主要是将我们的产品通过国密L2认证,这也是痛苦的根源,目前也仅通过一半。起初从已通过小伙伴处得知过认证还是比较容易,检测人员有提供部分指导。自从我们从接手项目开始,整个文档或者说产品的方案就不满足检测要求,才知道有多难。整个过程下来文档修改过不下百遍,在一遍遍修改和沟通下才艰难完成部分项目的认证,期间还收到整改通知。
总结下来:
我认为这个过程对我来说是焦虑的,首先它不是的我强项(产品研发),其次它的认证过程是我不能够把控的。当一件事情不在我的控制范围内的时候,充满了不确定性,就像一个快断线风筝,指不定什么时候就失败了,它就会让我变得焦虑。我的性格不容许有这样的事情发生。
同时,2023年较年初定下的目标完成了不到50%,未能达成年初计划,其中有研发方向的变化,有人员的变化。
不过今年公司产研的变化让我看到希望,从最初无产品经理到目前三名产品经理。现在产品的立项也较之前更严谨,不再是一股脑拍板觉得这个可以做,这个方向我看到了机会,今天行明天不行。我相信在产品经理的介入下,通过调研用数据说话,更多人的参与立项讨论,专业的事交给专业的人,以后会更加规范,做的产品会更有价值。
从根本上来说,利用每个人的长处去做事情一定是事半功倍的,有时候静下心来好好思考,方向比忙得不可开交更加重要,观察与发现比我觉得更合适。2023年工作上的变化就是没有变化,现在看来,除了埋头干活或许有意提升自身的价值更加重要。
今年生活上最大的变化是我们家里的天使宝宝降临,给我们整个家庭带来了很多变化。
宝宝出生前,家里就开始囤各种婴儿用品,什么婴儿床、婴儿车、小玩具、纸尿裤、抱被什么的,各种各样,以前我们小时候咋就没这么多玩意。同时两边的父母也过来帮着带带孩子煮个饭照顾我们的饮食,不然两个人确实转不过来。
孩子出生后本以为大人可以轻松一点,谁知孩他妈还堵奶,最严重的是最后还发炎了,痛的恼火得很。最后找通乳师通了五六次才消下去(新生孩母亲一定要注意这个问题)。孩子每几个小时就需要喂一次奶,有时候还一直哭闹,这让你睡眠和精力严重不足。但这就是人生需要经历的一件事,孩子有时候一个笑容就会把你治愈。加油吧,少年!
今年给自己找了一个锻炼的理由,一狠心给自己添置了一台公路车,国庆节第一次就去骑行了95公里的绿道,那感觉很酸爽。身边的朋友也一起购置了,以后跟这大神一起拉练。
个人比较向往独立开发者,有经验的朋友的可以带带新人。
装了一年多的房子打算2024年初入住。由于房子不是在工作附近,每次装修或安装什么东西就得安排时间,一来二去整个房子很多细节都没有弄好,不过有什么办法只有妥协,下一次不就有经验了嘛。
年前和朋友聊了许久,感觉每个人都有每个人的苦恼,都过得不容易,比如为了下一代怎么怎么的。要我说,有很多苦恼都是自己给自己的压力。只有先把自己安排好,才能安排别人。一辈子很短,快乐向上的活下去!
2024年,给自己立一些Flag:
2024让自己发生点变化。
2024年目标没有达成,执行力还是差了!!
2022-11-20 23:45:00
接上篇文章,继续折腾家庭网络:如何玩转智能家居 - 网络如何智能openwrt+v2ray。
本篇文章解决问题是:如何通过配置wireguard实现从世界任何地方优雅的访问家庭网络。我们在家庭网络使用场景汇总一定会遇到以下情况,人在外:
这些场景的基本需求是:安全性一定要有保障,能够在外网连接到家庭网络(不是简单的内网穿透,而是组成大局域网)。
答案不言而喻,组建vpn。那么问题来了,用什么vpn,如何连接到家庭网络:
本篇文章的目的是:通过vpn的形式使得在外网如同访问家庭内部局域网一样,让外部设备与家庭网络中的设备形成一个局域网。
那为什么选择wireguard:
网络架构:
博主目前设计的网络架构如上图,不过本篇文章只讲 光猫<->AC<->R2S
这样的链路:
光猫:192.168.1.1
AC(主路由):192.168.2.1
R2S(旁路由):192.168.2.100
这里的R2S我们作为旁路由来使用,什么是旁路由请自行搜索资料。简而言之,家庭内大多数网络均走AC主路由,部分走旁路由(翻墙),旁路由的(折腾)挂掉不会导致整个家里网络中断。
由于博主家庭网络没有公网IP,动态IP也没有,因此这里找了一台云服务器作为中转(非UDP打洞,中转方式会消耗云服务器流量,请悉知)。当然也可以用基于wireguard现成的方案,如tailscale,免费应该够用(有设备限制)。
这里假设你已经准备好已经准备好openwrt路由器。我们还需要准备:
一个公网IP:或是家里自带公网IP+DDNS,或是购买一台公网服务器VPS
一个域名:可选,如果你的公网IP是动态的,那就需要域名且必须通过DDNS
因为博主家里没有公网IP,那么只能通过这种内网穿透的方式实现,将wireguard的udp端口通过代理的方式暴露到外网,如果有公网IP跳至下一步。
1、在vps上安装frps服务端,请到 frp/releases 下载对应架构的最新版本即可,解压到服务器。
服务端配置:
[common]
bind_port = 7000
token = 768f72bc664ad2ad7c9edccf65523fd7
其中 token
是用来鉴权客户端的,请重新生成。bind_port
指定 frps 监听的端口,云服务器需要放开该端口的访问。
2、在openwrt安装frpc客户端,请到 System->Software
搜索 frpc
安装。
完成后进行配置:假设这里我们选择端口 51820/udp
作为wireguard的通信端口,IP 10.0.0.1
作为wireguard的网关IP。
我这边的 /etc/config/frpc
配置如下,你可对应着在网页上进行修改:
config init
option stdout '1'
option stderr '1'
option respawn '1'
option user 'root'
option group 'root'
config conf 'common'
option server_port '7000'
option tls_enable 'false'
option server_addr '<server_ip>'
option token '768f72bc664ad2ad7c9edccf65523fd7'
config conf 'ssh'
option name 'wireguard'
option type 'udp'
option use_encryption 'false'
option use_compression 'false'
option local_ip '10.0.0.1'
option local_port '51820'
option remote_port '51820'
记得将 server_ip
替换成frps的地址,如果不出意外的,openwrt中的frpc已经跑起来了。
WireGuard是点对点的网络,每个节点既可以做服务器,又可以做客户端。我们这里将部署在openwrt中的wireguard节点称为服务端,在手机或电脑端部署的wireguard节点称为客户端。更多安装方式:https://www.wireguard.com/install/。
整体步骤如下:
1、编辑LAN口,设置上游网关信息:
2、配置DNS:
3、关闭SYN-flood保护,开启动态IP伪装
1、在openwrt中安装wireguard建议通过System->Software
进行安装:
安装完成,重启路由器。同时你也会看到 Status->WireGuard
:
需要了解细节的朋友可以参考官方 Quick Start,我们这里通过openwrt进行wireguard服务端配置。
1、点击 Network->Interface
中的 Add new interface
创建接口:
2、接口名称建议 wg0
,协议选择 WireGuard VPN
进行创建:
3、一般设置:
Private Key
是WireGuard节点的私钥,可通过 Generate Key Pair
生成,也可手动生成:
# 通过ssh登录到openwrt,执行
$ wg genkey | tee privatekey | wg pubkey > publickey
$ cat privatekey publickey
Listen Port
监听的端口,这里设置为 51820
与 frpc 配置对应即可。
IP Addresses
是WireGuard接口的私有IP网段,这里设置为 10.0.0.1/24
与 frpc 配置对应,不要与其它内网IP段冲突。
4、防火墙设置,有 vpn
选 vpn
,无则选 lan
:
最后 Save
,保存即可,后续再步骤添加 Peers
。
首先,通过这里的安装方式进行客户端的安装:https://www.wireguard.com/install/,我这里以iOS举例。
1、点击 创建隧道->手动创建
:
2、填写基本信息,主要填写下面三项,其它默认:
生成密钥对
随机生成即可。10.0.0.1/24
。3、通过 添加节点
添加服务器信息:
192.168.100.0/24,192.168.2.0/0,10.0.0.0/0
。这样当开启wireguard vpn之后访问这些IP就会走vpn网络。到了这一步,客户端已经完成配置了。但是服务端还没有,因为wireguard本质上是一个P2P通信的软件,我们还要将客户端公钥信息配置到服务端才行。
在openwrt配置wireguard peer信息。
填写刚才配置的客户端信息,Save
保存即可:
现在在手机上开启 vpn,尝试访问一下路由器地址 192.168.100.1
是否可行。
1、客户端如何访问openwrt的下一级路由的服务,如这里如何访问 192.168.2.x
服务:
因为路由器作为openwrt的下一级路由,openwrt是不知道如何到达 192.168.2.x
这个网段的。因此需要添加一条静态路由:
2、如何所有流量都走wireguard,并且可以通过之前设置的v2ray进行科学上网:
请参考:https://www.wireguard.com/netns/#routing-all-your-traffic。
3、不用开启端口吗,很多教程上面需要开启路由器端口?
开启端口,一般是指我们路由器有公网IP,通过ddns方式对外暴露端口的时候需要开启。
[1] https://github.com/WireGuard
[2] https://www.wireguardconfig.com/
本文链接:https://deepzz.com/post/openwrt-and-wireguard-connect-homenet-anywhere.html,参与评论 »
2022-11-12 11:29:00
本篇文章仅作为个人技术研究记录,请勿用于非法用途。
玩转智能家居,网络很关键,本篇文章我们来聊一聊怎样实现科学上网。其具体的体现就是,路由器帮我们智能的识别我们想要访问的网站,通过分析判断,将流量通过不同的路径进行转发。使用场景大家可以自己想象,这里不做过多赘述。
本次的实战是:在安装了openwrt的软路由上(主路由),通过v2ray+vps实现的翻墙。本次相关软硬件如下:
一个路由器:博主使用软路由R2S+16GTF卡(读卡器),当然其它软路由也可或者安装了openwrt的路由器。
一个vps(墙外):用于安装v2ray服务端,帮助翻墙。
v2ray有多种传输方式,这里选用了KCP + wechat-video方式。
软路由首先要刷好openwrt的系统,如何刷,我这边以R2S为例:
1、安装刷机软件,因为用过树莓派刷机软件挺不错,推荐给大家:https://www.raspberrypi.com/software/。
2、 下载openwrt系统,在这里可以查询你的设备支持的固件 https://firmware-selector.openwrt.org/,记得选择版本号。
3、将TF卡连接至电脑,打开树莓派刷机软件,选择“使用自定义镜像“,选择刚才下载的openwrt系统文件,进行烧录:
一旦烧录完成,将TF插入r2s,插电即可启动。
我们修改openwrt网关IP的目的是为了防止IP地址冲突,默认情况下openwrt使用的是 192.168.1.1
,这与大多数光猫或路由器冲突。
将openwrt接入到现有网络,通过路由器或光猫后台查询到该openwrt的IP地址。直接访问该IP地址,密码为空,登录。我这里是更改为 192.168.100.1
。选择 Network->Interfaces
:
点击 Lan
口的 Edit
按钮,将 IPv4 address
修改为你想设置的地址,保存:
点击 Save & Apply
之后,等待片刻,即可使用新的地址 192.168.100.1
访问openwrt。
本方案中openwrt需要开启IP转发才能作为网关使用:
$ echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p
执行后将出现 net.ipv4.ip_forward=1 的提示。
如何安装v2ray?我们需要在vps上和openwrt上安装并配置v2ray的服务端和客户端。
服务器安装可以参考 Github 这个项目一键安装,需要提前切换到root。
$ bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
安装的相关文件地址会打印出来,如下:
installed: /usr/local/bin/v2ray
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/[email protected]
设置开机自启并启动v2ray服务:
$ systemctl enable v2ray; systemctl start v2ray
修改配置文件 /usr/local/etc/v2ray/config.json
:
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "info"
},
"inbounds": [
{
"port": 8545,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "<客户端鉴权uuid>",
"alterId": 0
}
]
},
"streamSettings": {
"network": "kcp",
"security": "none",
"tlsSettings": {},
"tcpSettings": {},
"httpSettings": {},
"kcpSettings": {
"mtu": 1350,
"tti": 50,
"uplinkCapacity": 100,
"downlinkCapacity": 100,
"congestion": false,
"readBufferSize": 2,
"writeBufferSize": 2,
"header": {
"type": "wechat-video"
}
},
"wsSettings": {},
"quicSettings": {}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "block"
}
]
}
这里的uuid是作为鉴权使用,随便生成 $ v2ctl uuid
,只需要保证客户端uuid填写一致即可。然后执行以下命令:
$ service v2ray restart # 重启v2ray服务
vps相关的防火墙端口记得开。如果进行调试,可以将日志等级调整为 Debug,并手动启动v2ray服务:v2ray -c /usr/local/etc/v2ray/config.json
在openwrt上安装v2ray,由于openwrt上未使用bash,故我们不能够使用上面的脚本进行安装,而是采用opkg的方式,请参考 https://github.com/kuoruan/openwrt-v2ray 安装v2ray-core。
也可以直接在openwrt网页上操作,一样的:
保存后,然后点击 Update lists
,完成后搜索v2ray进行安装即可:
注意,这里可能由于网络的问题,安装过程较长时间,请耐心等候,或多次尝试。
通过SSH登录到openwrt:ssh [email protected]
,编辑新建配置文件 /etc/config/v2ray
:
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 30000,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy",
"mark": 2
}
},
"tag": "transparent"
},
{
"listen": "0.0.0.0",
"port": 30443,
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": false
}
},
{
"listen": "0.0.0.0",
"port": 30080,
"protocol": "http",
"settings": {
"timeout": 360
}
}
],
"outbounds": [
{
"streamSettings": {
"network": "kcp",
"security": "none",
"kcpSettings": {
"downlinkCapacity": 20,
"writeBufferSize": 1,
"readBufferSize": 1,
"header": {
"type": "wechat-video"
},
"uplinkCapacity": 50,
"congestion": false,
"tti": 20,
"mtu": 1350
}
},
"tag": "proxy",
"mux": {
"concurrency": 8,
"enabled": false
},
"settings": {
"vnext": [
{
"users": [
{
"level": 0,
"security": "aes-128-gcm",
"alterId": 0,
"id": "<客户端鉴权uuid>"
}
],
"address": "<vps服务器地址>",
"port": 8545
}
]
},
"protocol": "vmess"
},
{
"protocol": "freedom",
"settings": {
"domainStrategy": "UseIP"
},
"streamSettings": {
"sockopt": {
"mark": 2
}
},
"tag": "direct"
},
{
"protocol": "blackhole",
"settings": {
"response": {
"type": "none"
}
},
"tag": "adblock"
},
{
"protocol": "dns",
"streamSettings": {
"sockopt": {
"mark": 2
}
},
"tag": "dns-out"
}
],
"dns": {
"servers": [
{
"address": "223.5.5.5",
"port": 53,
"domains": [
"geosite:cn",
"ntp.org"
],
"expectIPs": [
"geoip:cn"
]
},
{
"address": "114.114.114.114",
"port": 53,
"domains": [
"geosite:cn",
"ntp.org"
],
"expectIPs": [
"geoip:cn"
]
},
{
"address": "1.1.1.1",
"port": 53,
"domains": [
"geosite:geolocation-!cn",
"geosite:speedtest"
]
},
{
"address": "8.8.8.8",
"port": 53,
"domains": [
"geosite:geolocation-!cn",
"geosite:speedtest"
]
},
"localhost"
]
},
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"inboundTag": [
"transparent"
],
"port": 53,
"network": "udp",
"outboundTag": "dns-out"
},
{
"type": "field",
"inboundTag": [
"transparent"
],
"port": 123,
"network": "udp",
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"223.5.5.5",
"114.114.114.114"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"8.8.8.8",
"1.1.1.1"
],
"outboundTag": "proxy"
},
{
"type": "field",
"domain": [
"geosite:category-ads-all"
],
"outboundTag": "adblock"
},
{
"type": "field",
"protocol": [
"bittorrent"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:private",
"geoip:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
}
]
}
}
不对配置做过多解释,你需要替换掉配置中需要修改的部分 <客户端鉴权uuid>
和 vps服务器IP
。执行 v2ray -c /etc/config/v2ray
,等待启动成功。
此时,我们已经可以进行智能上网了,当然这里还没有实现 透明代理
。验证方式,通过指定代理:
$ http_proxy=192.168.100.1:30080 curl -Lv google.com # 墙外测试
$ http_proxy=192.168.100.1:30080 curl -Lv baidu.com # 墙内测试
这里我们的软路由是作为旁路由使用的,因此需要实现全局的智能上网(透明代理),所有连接到该路由的设备都可以智能的选择网络路线。透明代理原理是通过 nftables
的路由转发等功能。
完成安装后,请ssh到openwrt。iptables
执行:
# 设置策略路由
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
# 代理局域网设备
iptables -t mangle -N V2RAY
# 目标网关所在网段请求直连, 执行:
# ip address | grep -w "inet" | awk '{print $2}'
iptables -t mangle -A V2RAY -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 100.64.0.0/10 -j RETURN
iptables -t mangle -A V2RAY -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A V2RAY -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A V2RAY -d 192.0.0.0/24 -j RETURN
# 目标地址为组播IP/E类地址/广播IP直连
iptables -t mangle -A V2RAY -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY -d 255.255.255.255/32 -j RETURN
iptables -t mangle -A V2RAY -d 192.168.100.0/24 -p tcp ! --dport 53 -j RETURN
iptables -t mangle -A V2RAY -d 192.168.100.0/24 -p udp ! --dport 53 -j RETURN
iptables -t mangle -A V2RAY -m mark --mark 2 -j RETURN
# 给 UDP 打标记 1,转发至 30000 端口
iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 30000 --tproxy-mark 1
# 给 TCP 打标记 1,转发至 30000 端口
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 30000 --tproxy-mark 1
# 应用规则
iptables -t mangle -A PREROUTING -j V2RAY
# 代理网关本机
iptables -t mangle -N V2RAY_MASK
# 目标网关所在网段请求直连
# 执行: ip address | grep -w "inet" | awk '{print $2}'
iptables -t mangle -A V2RAY_MASK -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 100.64.0.0/10 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 192.0.0.0/24 -j RETURN
# 目标地址为组播IP/E类地址/广播IP直连
iptables -t mangle -A V2RAY_MASK -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 255.255.255.255/32 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 192.168.100.0/24 -p tcp ! --dport 53 -j RETURN
iptables -t mangle -A V2RAY_MASK -d 192.168.100.0/24 -p udp ! --dport 53 -j RETURN
iptables -t mangle -A V2RAY_MASK -m mark --mark 2 -j RETURN
# 给流量打标记, 重路由
iptables -t mangle -A V2RAY_MASK -p tcp -j MARK --set-mark 1
iptables -t mangle -A V2RAY_MASK -p udp -j MARK --set-mark 1
# 应用规则
iptables -t mangle -A OUTPUT -j V2RAY_MASK
# DIVERT 规则, 避免已有连接的包二次通过 TPROXY
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT
nftbles
执行:
#!/usr/sbin/nft -f
# 清空已有规则
flush ruleset
# 局域网的地址
define RESERVED_IP = {
10.0.0.0/8,
100.64.0.0/10,
127.0.0.0/8,
169.254.0.0/16,
172.16.0.0/12,
192.0.0.0/24,
224.0.0.0/4,
240.0.0.0/4,
255.255.255.255/32,
}
# 代理设备
table ip v2ray {
# 局域网
chain prerouting {
type filter hook prerouting priority 0; policy accept;
ip daddr $RESERVED_IP return
meta l4proto tcp ip daddr 192.168.0.0/16 return # 直连局域网
ip daddr 192.168.100.0/24 tcp dport != 53 return
ip daddr 192.168.100.0/24 udp dport != 53 return
meta mark 2 return # 直连流量
meta l4proto { tcp, udp } meta mark set 0x1 tproxy to :30000 accept # 转发至v2ray
}
# 网关本机
chain output {
type route hook output priority 0; policy accept;
ip daddr $RESERVED_IP return
meta l4proto tcp ip daddr 192.168.0.0/16 return # 直连局域网
ip daddr 192.168.100.0/24 tcp dport != 53 return
ip daddr 192.168.100.0/24 udp dport != 53 return
meta mark 2 return # 直连流量
meta l4proto { tcp, udp } meta mark set 0x1 accept # 重路由至prerouting
}
}
# DIVERT规则
table ip filter {
chain divert {
type filter hook prerouting priority -150; policy accept;
meta l4proto tcp socket transparent 1 meta mark set 1 accept
}
}
请注意,这里有代理局域网设备和网关本机的配置,可自行选者。这里 192.168.100.0/24
需要换成你openwrt路由器的IP地址段。进行测试:
$ curl -Lv google.com # 墙外测试
$ curl -Lv baidu.com # 墙内测试
如果执行完上面的 iptables
或 nftables
命令之后,路由器的访问出现问题,如ssh连不上openwrt,可通过重启路由器的方式解决。因为这里的规则是软写入的,在内存中,重启之后就会无效。因此,一旦你测试成功,请将配置粘贴到openwrt中的 Network->Firewall->Custom Rules
进行固化:
1、更多关于透明代理的原理和细节可以参考以下文章:
2、openwrt如何实现v2ray后台运行,开机自启,解决 too many open files
?
编辑新建 /etc/init.d/v2ray
:
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
NAME=v2ray
PROG=/usr/bin/v2ray
start_service() {
procd_open_instance $NAME
procd_set_param command "$PROG" -config /etc/config/v2ray
procd_set_param file /etc/config/v2ray
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param stdout 1
procd_set_param stderr 1
# respawn automatically if something died, be careful if you have an alternative process supervisor
# if process dies sooner than respawn_threshold, it is considered crashed and after 5 retries the service is stopped
# /etc/init.d/your_service reload will restart the daemon if these files have changed
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
procd_close_instance
}
reload_service() {
stop
start
}
添加执行权限 $ chmod +x /etc/init.d/v2ray
。可执行:
$ /etc/init.d/v2ray start/stop/restart # 启动/停止/重启
本文链接:https://deepzz.com/post/router-openwrt-v2ray-tproxy.html,参与评论 »
2022-06-23 22:27:00
接上篇:如何玩转智能家居 - 家庭组网方案选择。
当我们已经选择好家庭组网方案之后:AC(PoE)+AP。那么问题来了:实际该如何操作,如何布线,需要考虑什么?
就我来说,可能考虑这些因素:
确定需求前,我们确定下当下的环境:
以上,我们得出:全屋采用超六类网线即可满足未来需求,超六类网线可以达到万兆网络,往后看还是能够满足的。全屋主要是以WiFi为主,那么部署AP时,如果不需要网线则不牵网线,节省成本。
我们还有有哪些需求需要解决呢,确定以下信息:
以上,我们得出:
那么综合以上信息,我确定我是需要一个机柜的:将所有的网络硬件都放在一个位置,把NAS也放过去,最后将该机柜放到定制柜里完美隐藏。
接下来是设计布网方案,这需要实际根据户型图来操作。大家可以参考我的这张设计图:
基本思路就是有一个总的网络机柜,网络从弱电箱出来直接到网络机柜,后续的网络全部走机柜出去。由于博主要实现内网穿透,故画了阿里云上去,如果你们不需要可不参考(也可以走wireguard/tailscale
打洞方案)。
以上图仅是设计参考用,实际在实施过程中有些许变化。然后就有了这张图:
这张图AP酌情减少了一个,具体根据实际情况来定。
当你确定好方案之后,一定要第一时间与电工师傅进行核对,确认方案的可行性。博主就是这样,想当然的将弱电箱挪到鞋柜处,所有网络设备都放到鞋柜,谁知强电与弱电在一个垂直面上,不行。所以改到了餐柜处,当时也是打得我措手不及,方案是调整了又调整。
基于以上种种结论,可以开始选择设备了。
首先,选机柜。tb上的机柜也有现成的,而且非常结实,有兴趣的朋友可以看这里:简易开放式机柜
但是,自购机柜的话需要考虑机柜放置位置。比如放鞋柜,那么尺寸一定要合适。还有就是机柜出最好叫木工师傅帮助打一个散热孔。
现成的对于我来说不够折腾,本着极客的原则,博主开始学习网友的购买零件自己组装机柜。具体可参考这里:
从知乎上看到第一眼就爱上这个配置,和我的计划也非常符合。于是我也采购了一套,不过散热还是比较贵的。等房子装修好了晒图。
由于是面板AP,选择面就比较少了。最开始相中了华为的H6,不过这玩意是贴上去的,不够美观。于是叫朋友推荐了一套TP-Link的套装,省事也省心。
TP-LINK TL-R4010GP-AC PoE ACTP
TP-LINK TL-XAP3002GI-PoE
这两款设备,我是在某鱼上购买的全新,应该不会翻车,有需求的朋友可以去某鱼上搜索下。
这款AC是集PoE交换机一体的:
这款AP是支持Wi-Fi6:
看中这款AP的原因也是它的出墙厚度仅9.4mm,与普通插座面板差不多的高度。实现了完美的隐藏。
https://www.zhihu.com/question/26596786/answer/279309998
本文链接:https://deepzz.com/post/smart-home-networking-design.html,参与评论 »