V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mikewang  ›  全部回复第 2 页 / 共 34 页
回复总数  665
1  2  3  4  5  6  7  8  9  10 ... 34  
#71 @chord
不可以的,详见 16 楼。这里没有涉及转发,并且插入的 TCP 报文是特殊构造的,可以被中途丢弃且不影响原有 TCP 连接。
你可以简单理解为 FakeHTTP 工作在旁路(但实际上是队列处理的)。
@bfdh #68

查了一下,`-w` 是在 v1.4.20 支持的,已经是十多年前了。已更新采用 `-w` 选项,感谢建议。
@bfdh #68

1 )往返的路径不一定是同一条,估算容易出问题。虽然大多数情况是差不多的,但是没有 100%把握就需要容我考虑一下。
2 )-w 参数在旧版 iptables 不支持,会直接报错,因此考虑兼容性我没有写上。
#60 @yyysuo
FakeHTTP 会新增一个优先级最高的规则,但是只匹配第一个 SYN-ACK / ACK 。因此我觉得不太会影响别的组件。
kmod 用 opkg 能装的上,就是能用的,不然安装时就会报错。

#62 @yyysuo
你这种情况相当尴尬,ttl=3 意味着半径为 3 以内的公网 IP 主机都没法正常通信( FakeHTTP 做了局域网 IP 排除,但是你很不幸地被 NAT 成公网了)
你把匹配的数据包 -j MARK --set-mark 512 吧(默认值,或者是你设定的-m 值),匹配这个值的数据包不会被 FakeHTTP 处理。暂时没想到别的办法。
@fengyaochen #57
有可能只是晚高峰正常拥堵,线路不好。FakeHTTP 只能解决对基于 HTTP 域名(不)限速的场景。

@freedomNet #58
因为直接 kill ,将不给 FakeHTTP 机会去清除它加的 iptables 规则,导致队列阻塞(没有 fakehttp 进程去消化这些 SYN-ACK/ACK 数据包了)。
这个问题其实挺重要的,今天晚上的版本会解决这个问题。
#53 @microka
目前可以通过 nohup 命令在后台运行(可以网上查一下它的用法)。

以后的版本可以通过 `-d` 命令后台运行。
FakeHTTP 目前还是 beta 公测状态,在 v1.0 之前还有不少功能需要完善( IPv6/输出日志到文件/后台运行/支持多网络接口/...),以及 bug 修复。

#54 @microka
感觉是短时间建立了大量的 TCP 连接,然后你的路由器来不及处理了🤦‍♂️ 可以把日志发到 GitHub issue 上面(可码掉 IP 地址),然后我看一下怎么改进。
#50 @opengg
不需要。HTTP 特征由于 TTL 值很低,被半路丢弃,目标服务器收不到,所以不需要任何处理。
#34 @NewYear
没错,TTL 是关键。不支持 NAT 是因为我写的 iptables 规则有点问题,不应在 PREROUTING 链处理。最新版本已修复。

#35 @qwvy2g
TTL 值也可以自行修改 `-t` 调大,如果你觉得不够用。当然设置太大了,被服务器收到就有问题了。服务器多半会回给你一个 RST 。

#38 @ioooou
看起来是你正使用 iptables-nft ,但是是不是有 Docker 或者其他程序在使用 iptables-legacy 导致冲突。
试试 sudo update-alternatives --config iptables ,切换为 iptables-legacy 。

#39 @microka
IPv6 还没有适配,将来会考虑。

#44 @zjsxwc
可以大致这样理解。不过 HTTP 特征的数据包和后续真正的数据包是共用同一个 TCP Sequence 的。
HTTP 特征由于 TTL 值很低,被半路丢弃,目标服务器收不到。
@Rokaki #31 对方收不到的。详见上文 [一些说明] 第三条解释。
@dizhang #20 根据你描述这种情况来看,FakeHTTP 就能解决这个问题。把 -h 参数指定为测速网站域名就好。
爱快是 Linux 内核,但估计也是精简掉 nfqueue 功能了。可以试试,不行还是得装内核扩展。
像 Debian / Ubuntu / Fedora 等 Linux 发行版肯定是没问题的,开箱即用。

@igamebox #21 大概率是没退干净,用 ps 命令或者 pgrep fakehttp 看下进程号
@Terminl #13
可能是你误解了其中的原理。FakeHTTP 只插入,不转发。

SYN -- SYN-ACK -- ACK -*- 数据 1 -- 数据 2 ...

FakeHTTP 在 [ ACK -*- 数据 1 ] 之间,直接对外发送含有 HTTP 特征的 TCP 报文,不涉及任何转发。

nfqueue 的作用是:1. 截取通信中的数据包 2. 拦截 TCP 栈处理流程,将 HTTP 特征在 [数据 1] 前发送出去。

转发全部流量是消耗资源且会带来延迟的,FakeHTTP 不会采用这种方式。
@march1993 #7
?目标端口不认识 HTTP 怎么通信
#2 @qaz741wsd859 入站出站都生效。主要针对出站,入站还在测试中。

#3 @NewYear 不是,这个不是协议。和是否有公网/开放端口没有关系。可以通俗的理解为:在正常的 TCP 传输中加一点 HTTP 特征,骗过限速。

FakeHTTP 只处理已有的 TCP 报文,自身不提供服务。
不关机,似乎说的大多数是 MacBook 。并且 MacBook 插电源和不插电源差距也挺大的。
插电源的话,合盖还能 ping 通,还能 ssh 进去。跑什么命令都没问题。
不插电源,过一段时间就掉线了,ssh 也不行。应该是进入了更深层次的睡眠。

Mac Mini 应该是一直插电的,可能就没有那种体验了(?)
38 天前
回复了 mikewang 创建的主题 MySQL 坑爹的字符集问题:踩到了 MySQL 的 bug
@xiangyuecn #20
你确实发现了一个令很多人困惑的地方:SQL 中的“相等”,其实是概念上的等价,不是完全的相同。

排序规则( collation ),规定了 order by 的顺序,也规定了哪些字符串是“相等”的,等号运算会返回真,group by 会被分到一组。
如果对排序规则了解不深,我推荐阅读一些相关的资料,这样奇奇怪怪的问题就能迎刃而解了。

以 MySQL 为例吧,设置 set collation_connection=utf8mb4_general_ci;
select 'abc' = 'ABC'; -- 你会发现它们是相等的,结果为 1 。
select hex('abc') = hex('ABC'); -- 你会发现结果为 0 ,不等。

select 'abc' = 'abc '; -- 相等
select length('abc') = length('abc '); -- 不等

其实也没什么问题。因为“排序规则”规定了它们等价。但是它们又不是同一个东西,所以套一层函数就不等了。
当然你也可以选一个 NO PAD 的规则,让它们自身不等。

set collation_connection=utf8mb4_0900_ai_ci;
select 'abc' = 'abc '; -- 不等
select length('abc') = length('abc '); -- 不等

这些都是可以配置的,并且不同数据库上的默认配置可能有所不同。

希望对你有所帮助。
39 天前
回复了 mikewang 创建的主题 MySQL 坑爹的字符集问题:踩到了 MySQL 的 bug
@lance6716 #18 优秀 d(^_^o)
39 天前
回复了 mikewang 创建的主题 C 坑爹的 GBK:大家都应该去用 UTF-8
@sapphire #89
不是应用,我在做一个基础的跨平台库,尽力兼顾简洁、性能、准确性。调库直接转换应该是省事,但是我不想搞得太臃肿(比如在 OpenWRT 路由器下面也能运行?)
其实支持中文只是我的一个想法,当初程序只支持 ASCII 。后来我发现引入 UTF-8 代价很小,大多数代码都没问题。在后来我引入了 Windows 支持,就遇到了 GBK 。它对原先 ASCII 的代码兼容不好。然后我就吐槽了。
39 天前
回复了 mikewang 创建的主题 C 坑爹的 GBK:大家都应该去用 UTF-8
@HTravel #82 那肯定是不敢,不然我也不会发帖了。所以回到标题:大家快点统一 UTF-8 ,少一层转换,大家都省事。
对于 Windows ,应该把 ANSI API 的 UTF-8 支持好。事实上 POSIX 的大多 API 就是微软所谓的 ANSI API 。
Unicode API 的想法是好,但是最后 UTF-16 还是变成了变长编码(代理对),实在是又吃了亏。(路线走错了)
39 天前
回复了 mikewang 创建的主题 C 坑爹的 GBK:大家都应该去用 UTF-8
@HTravel #80
是简化后的代码,因为这个不是重点。整块太长了,再加上异常处理流程等等,我估计大伙都不愿意看。

入参是被 realpath()标准化后的路径,不存在这种了。
39 天前
回复了 mikewang 创建的主题 MySQL 坑爹的字符集问题:踩到了 MySQL 的 bug
@lepig #5
如果是全新的业务,那么用默认的排序规则 utf8mb4_0900_ai_ci ,或者它的哥们(大小写敏感/不敏感)都是 OK 的。
这里考虑到一些已有的老库,比如它们的排序规则已经定在 utf8mb4_bin 了,那么除非重新进行完整的测试,那最好还是别动它,一般还按原来的用。
1  2  3  4  5  6  7  8  9  10 ... 34  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 22:00 · PVG 06:00 · LAX 15:00 · JFK 18:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.