gpt4 book ai didi

linux - 如何将 Linux 网络命名空间用于每个进程的路由?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:43 24 4
gpt4 key购买 nike

我想通过浏览器抓取网页并存储每个 URL 的网络流量(不仅是 HTTP,还有 udp、rtmp 等)我遇到了这个解决方案,使用 linux 网络命名空间进行每个进程路由。以下是我遵循的步骤,但是无法浏览网页。

ip netns add test

创建一对虚拟网络接口(interface)(veth-a 和 veth-b):

ip link add veth-a type veth peer name veth-b

更改 veth-a 接口(interface)的事件命名空间:

ip link set veth-a netns test

配置虚拟接口(interface)的IP地址:

ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0

ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0

在测试命名空间配置路由:

ip netns exec test route add default gw 192.168.163.254 dev veth-a

sudo bash -c ‘echo 1 > /proc/sys/net/ipv4/ip_forward’

sudo iptables -t nat -A POSTROUTING -s 192.168.163.0/24 -o wlan0 -j MASQUERADE

在命名空间中打开浏览器并获得以下内容:

sudo ip netns exec test /usr/bin/firefox http://google.com

(firefox:15861):GConf-WARNING **:客户端无法连接到 D-BUS 守护进程:无法连接到套接字/tmp/dbus-xE8M4KnMPn:连接被拒绝

(firefox:15861):LIBDBUSMENU-GLIB-WARNING **:无法获取 session 总线:无法连接:连接被拒绝

在 wireshark 中:sudo ip netns exec test wireshark我只能看到从 192.168.163 到 127.0.1.1 的传出 DNS 请求。请让我知道我在这里缺少什么?

最佳答案

与其修改主机/etc/resolv.conf,不如在以下路径/etc/netns/中创建特定于网络命名空间的 resolv.conf。 “ip netns”实用程序会将此路径上的任何 resolv.conf 绑定(bind)到挂载命名空间中的/etc/resolv.conf,以用于使用新网络命名空间启动的进程。

关于linux - 如何将 Linux 网络命名空间用于每个进程的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com