V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gleport  ›  全部回复第 1 页 / 共 3 页
回复总数  53
1  2  3  
可以用 SSH 的反向隧道,需要有一个家里和公司都可以访问的 SSH 服务,我以下面的场景来说明:

场景:主机 A 在一个私有网络,主机 B 和 A 不在一个私有网络。B 想使用 A 的网络来访问一些服务,比如使用 A 的网络来进行 `git push`。
实现:通过一台 A 和 B 都可以访问的主机 C ,并且 C 开启了 SSH 服务,可以实现上面的场景需求。
假设 C 的 ip 地址为 IP-C 。
步骤:

A:

```
./socks5 -p PortA # 任何 SOCKS5 Server 都可以,这里以 https://github.com/jqqjj/socks5 为例
ssh -NR PortC:localhost:PortA root@IP-C
```

B:

```
ssh -NL PortB:localhost:PortC root@IP-C
mgraftcp --socks5="localhost:PortB" git push # 这里即使用了 A 的网络
```

需要稳定服务的话可以使用 autossh 来启动上面的 ssh 连接。
tmux 的色彩和在终端上有差异的原因是:tmux 没有为终端开启 RGB 特性,本来应该是 RGB 24 位颜色的 ANSI 转义序列被 tmux 转换为比较接近的 256 色的转义序列,再输出给终端渲染。可以通过 `tmux -vvv` 启动日志查看 RGBCOLOURS flag 确认。

tmux 也给用户提供了配置来开启 RGB 特性:set -as terminal-features ",根据自己的$TERM 值而定*:RGB"

另外不推荐 export TERM=tmux-256color 这种方式修改 TERM 环境变量,这个值一般是终端模拟器初始化的时候终端自己设置的,许多外部程序会依赖这个值查询出对应的 terminfo ,从而确定终端特性能力以及在不同输入的行为,比如对 <CTRL>_l 这些控制序列的反应。正如 kitty 在这个配置上的警告说的:


#: The value of the TERM environment variable to set. Changing this
#: can break many terminal programs, only change it if you know what
#: you are doing, not because you read some advice on "Stack Overflow"
#: to change it. The TERM variable is used by various programs to get
#: information about the capabilities and behavior of the terminal. If
#: you change it, depending on what programs you run, and how
#: different the terminal you are changing it to is, various things
#: from key-presses, to colors, to various advanced features may not
#: work. Changing this option by reloading the config will only affect
#: newly created windows.

我刚写了一篇 blog 来总结了一下 tmux 在不同终端下颜色差异的原因: https://hmgle.github.io/terminal/tmux/color/2024/05/12/term-color.html
2022-02-15 18:19:27 +08:00
回复了 workwonder 创建的主题 程序员 [viaproxy] 我基于 graftcp 封装了一个命令行代理 helper
忘了 makefile 写法了,请忽略😅
2022-02-15 18:07:33 +08:00
回复了 workwonder 创建的主题 程序员 [viaproxy] 我基于 graftcp 封装了一个命令行代理 helper
很不错!不过发现首层目录缺少 Makefile 导致不能执行 `make -C graftcp`,是否忘提交了?
2021-07-07 21:26:12 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@mjikop1231 和 proxychains 的主要差别是支持 golang 的程序。
2021-02-25 09:06:22 +08:00
回复了 iceorange 创建的主题 程序员 cproxy: 使用简单的 Linux per app 透明代理
回应一下楼主说的 graftcp 每次要起两个程序的问题:graftcp-local 是设计为守护进程方式使用的,"sudo systemctl --now enable graftcp-local.service" 后使用方式和 proxychains 基本一致。
适合用字典树来实现。把这 100 万个词组从 MySQL 读出存进一棵字典树里,不会消耗多大内存。

一百多行左右的核心代码就可以完成了:

```go
package main

import (
"fmt"

"github.com/hmgle/trie-x/go/trie"
)

func main() {
t := trie.New()
t.Insert("yellow wall", 1)
t.Insert("little cat", 1)
t.Insert("brown cat", 1)
t.Insert("yellow dog", 1)
t.Insert("coffee cup", 1)

content := "a little cat is sleeping behind a yellow wall with a yellow dog"
hits := t.ScanContent(content)
for _, hit := range hits {
fmt.Printf("word: %s, offset: %d\n", hit.Word, hit.Offset)
}
}
```

输出:

```
word: little cat, offset: 2
word: yellow wall, offset: 34
word: yellow dog, offset: 53
```
2020-05-06 09:04:42 +08:00
回复了 1and0 创建的主题 Ubuntu ubuntu 有办法让终端走 proxy 吗?
浏览了上面的回复,发现不少人对设置代理这方面存在误解。比如:
设置环境变量 http_proxy=socks5:********。有人提到需要配置 HTTP 协议的而不是 sock5,其实这完全取决于要运行的这个程序认不认,很多软件是支持这种方式的。https://twitter.com/chenshaoju/status/1181780020345233408 这里也提到了。设置环境变量的方法是把选择权完全交给要运行的程序,具有一定局限性。程序读取什么名字的环境变量,怎么转换就是它自己的事情了,有些程序是不支持的。
2020-05-05 14:17:27 +08:00
回复了 1and0 创建的主题 Ubuntu ubuntu 有办法让终端走 proxy 吗?
proxychains 对 Go 编译出来的无效。docker 可以参考 https://github.com/hmgle/graftcp/issues/14
2020-01-16 11:18:35 +08:00
回复了 abu666 创建的主题 问与答 问下大佬们如何通过跳板机连接数据库
之前总结过一些通过跳板机连接 MySQL、Redis 等服务的技巧:
https://hmgle.github.io/wiki/tip/forwarded_tips.html
希望能帮到你。
2019-11-05 18:02:30 +08:00
回复了 qiuyesuifeng 创建的主题 前端开发 让数据库运行在浏览器里? TiDB + WebAssembly 告诉你答案
想问一下楼主编译出来的 TiDB wasm 文件有多大。
我之前刚好也把一个用 Go 写的象棋引擎生成了 wasm 在浏览器运行,动用了 wasm-opt 和 wasm-strip 后,也有 2 MB 多一点,感觉体积还是挺大的。
2019-08-27 13:49:05 +08:00
回复了 namek 创建的主题 问与答 请问 v2 的大佬 我这眼睛是怎么回事啊啊啊
楼主是否有趴着桌子午睡的习惯,眼球可能收到了物理挤压?
2019-01-23 19:23:49 +08:00
回复了 ishiguang 创建的主题 程序员 有办法把 ubuntu18 所有的命令行程序网路走 ss5 代理么?
graftcp
2018-08-06 23:37:56 +08:00
回复了 gleport 创建的主题 奇思妙想 一种实现 HTTPS 抓包的方法
楼上列举的部分工具,它们的原理基本一致,有些是和 Charles 一样都是闭源收费软件,基本都需要代理全局流量来达到效果。而这种方式是仅仅影响到需要分析的程序的。我仅仅是提出一种想法,没有这方面需求的话也就没有必要继续了。
2018-08-06 09:57:15 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@lyztonny tsocks 功能类似,但无法实现重定向静态链接程序的 TCP 流量功能,graftcp 对这点做了改进。
2018-08-05 19:32:37 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
2018-08-04 12:10:38 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@qf0129 可以的,graftcp-local 启动后,graftcp ssh user@xxx 就可以了。或者:
graftcp bash
在这个新 Shell 里面 ssh user@xxx
2018-08-04 12:08:19 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@lemonda 如果是 PHP 未运行前,可以通过 graftcp 启动一个 Shell, 如: `graftcp bash`,然后在这个新 Shell 内启动 PHP。
如果是已经运行的 PHP,那么 graftcp 目前没有实现对正在运行的进程 attach 进行跟踪。
Linux 里 ptrace 可以跟踪一个没有血缘关系的运行时进程,但需要以 root 权限修改默认的 /proc/sys/kernel/yama/ptrace_scope 值为 0:

sudo su
echo "0" > /proc/sys/kernel/yama/ptrace_scope

需要这个功能的话,可以提一个 issue,我有时间实现一下,有人能 PR 就更好了~
2018-08-04 10:34:30 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@codehz 这里没看明白,是用 Unix domain socket 代替处理 TCP connect 的监听服务吗?
前面应该是我没有说清楚开端口的原因:因为不能通过修改 write buffer 往里面加入更多的数据(否则我们可以直接把 connect 重定向到 proxy, 每次 write/send 之前改写里面的 buffer, 把发送数据转换为 SOCKS5 协议的数据就可以了,不需要连接到现在 graftcp-local 这个中转处理数据的这一步。我之前踩了这个坑:),以为可以通过共享内存的方式为被跟踪的 app 新增一片更大的可读写内存,查了 execve 的手册才知道所有的共享内存在 execve 之前都被解除了),所以需要有一个 TCP server 来处理 app 的 connect 请求,这就是 graftcp-local
开了 2233 这个端口监听的原因。

正如 @1423 提到,graftcp-local 这部分的功能可以合并进 graftcp,如果这样实现的话,为了避免同时运行多个 graftcp 出现端口冲突的情况,每个 graftcp 监听的端口得不相同。这种做法带来的好处很明显,不需要 graftcp-local 了。后期有时间的话,我可能会把 graftcp-local 这部分的功能合并进 graftcp。有好的想法或实现的话,欢迎 PR 哦。

考虑到调用 ptrace 和实现 SOCKS5 客户端的方便性,以及程序体积等因素,用 Rust 实现也许是个不错的选择。
2018-08-03 17:37:08 +08:00
回复了 gleport 创建的主题 分享创造 一种把指定程序的 TCP 流量重定向到代理的方法
@dbw9580 被跟踪的进程再 fork 子进程,子进程也会被跟踪。里面的例子:
./graftcp bash 开一个 shell, 然后在这个 shell 里面运行所有命令产生的 connect 都会被重定向了。因为 ptrace 设置跟踪时加了 PTRACE_O_TRACECLONE 和 PTRACE_O_TRACEFORK、PTRACE_O_TRACEVFORK 标志位。
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5515 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 07:13 · PVG 15:13 · LAX 23:13 · JFK 02:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.