怎样让浏览器使用指定的网卡?

2023 年 4 月 15 日
 kernelpanic

curl 可以用下面的方式通过指定的网卡发送数据

curl --interface tun0 httpbin.org/ip

浏览器有没有类似的方式?找了半天,发现一个 hook 的方式

#include <sys/socket.h>

#define IFACE_NAME "wl0"

int connect(int fd, const struct sockaddr *daddr, socklen_t addrlen)
{
        int ret;

        if (daddr->sa_family == AF_INET)
                setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, IFACE_NAME,
                           sizeof(IFACE_NAME));

        __asm__ volatile (
                "syscall"
                : [eax]"=a"(ret)
                : [rax]"a"(42), [rdi]"D"(fd), [rsi]"S"(daddr),
                  [rdx]"d"(addrlen)
                : "rcx", "r11", "memory"
        );

        return ret;
}
gcc -fpic -fPIC -Wall -Wextra -shared -O3 connect.c -o connect.so

export LD_PRELOAD="/tmp/connect.so" curl httpbin.org/ip
#这样对 curl 是有效的,但是对 chrome 无效
export LD_PRELOAD="/tmp/connect.so" /opt/google/chrome/chrome --headless --disable-gpu --dump-dom --no-sandbox
#用 root 也无效,firefox 也是这样

有没有人知道咋回事?

3956 次点击
所在节点    Linux
18 条回复
lwjef
2023 年 4 月 15 日
这个是你要的吗
routing - Bind unix program to specific network interface - Unix & Linux Stack Exchange
https://unix.stackexchange.com/questions/210982/bind-unix-program-to-specific-network-interface
seashell2000
2023 年 4 月 15 日
use pac
kernelpanic
2023 年 4 月 15 日
@lwjef 把虚拟网卡加入到 ip netns 就断网了,这种方式应该可以就是不知道怎么配置
kernelpanic
2023 年 4 月 15 日
@seashell2000 我要的效果是 20 个 Puppeteer 爬虫分别使用 20 个虚拟网卡。。pac 应该做不到
Puteulanus
2023 年 4 月 15 日
跑一个指定网卡的 socks 代理,然后浏览器设置用那个代理?
DefoliationM
2023 年 4 月 15 日
linux 可以用 cgroup 分流一下,通过浏览器的 pid 或者使用不同用户运行浏览器。
0o0O0o0O0o
2023 年 4 月 15 日
#5 #6 的方案都可以
leonshaw
2023 年 4 月 15 日
静态链接的?改成 ptrace syscall 试试。
leonshaw
2023 年 4 月 15 日
或者按用户打 mark 配路由策略。
xxb
2023 年 4 月 15 日
跑 20 個 docker ,分別 20 個 ip 和 mac
akira
2023 年 4 月 15 日
考虑下分别给代理软件绑定网卡,然后浏览器指定不同的代理端口?
kernelpanic
2023 年 4 月 15 日
找到原因了。。。Puppeteer 加一个--allow-unsecure-dlls 参数就可以了。。。。
iutopia
2023 年 4 月 15 日
windows 怎么处理?
kernelpanic
2023 年 4 月 15 日
ch2
2023 年 4 月 16 日
你这个用 docker 就行了,每个容器改各自的路由表
huangmingyou
2023 年 4 月 17 日
用 netns 加 macvlan 可以实现
iutopia
2023 年 4 月 18 日
@kernelpanic #14 realease 空了呀。
iutopia
2023 年 4 月 18 日
@kernelpanic #14 经过测试,blind 之后,被绑定的浏览器并没有从指定的网卡里面走数据。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/932747

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX