2023/3/2

在多網卡機器上,指定使用某網卡

ref: 還有 bing 的回答:
有一些方法可以实现在多 nic 的 linux 机器上指定某程序使用某 nic,而不是依照 routing table。其中一种方法是使用 LD_PRELOAD 技巧,通过修改程序的网络绑定来实现¹。
另一种方法是使用网络命名空间(network namespaces)的特性,通过 ip 命令来创建和管理不同的网络环境¹²。
來源:
然後,name space 的方法:
如何使用网络命名空间来指定程序使用 eth1。可以按照以下步骤操作:

- 创建一个网络命名空间,比如叫 ns1:`ip netns add ns1`
- 将 eth1 接口移动到 ns1 命名空间中:`ip link set eth1 netns ns1`
- 在 ns1 命名空间中配置 eth1 的 IP 地址和路由:`ip netns exec ns1 ifconfig eth1 192.168.0.10/24 up` 和 `ip netns exec ns1 ip route add default via 192.168.0.1`
- 在 ns1 命名空间中运行您想要指定的程序,比如 ping:`ip netns exec ns1 ping 8.8.8.8`

这样,您就可以让 ping 程序使用 eth1 而不是默认的网络接口了。

(1) Network Namespaces — PF_RING dev documentation. https://www.ntop.org/guides/pf_ring/containers/namespaces.html
(2) How does `ip netns exec` command create mount namespace?. https://stackoverflow.com/questions/45629002/how-does-ip-netns-exec-command-create-mount-namespace
(3) Network Emulation using Network Namespaces and Mininet. https://www.inf.usi.ch/faculty/carzaniga/edu/adv-ntw/mininet.pdf

然後,用 LD_PRELOAD 的方法:
使用网络命名空间来指定程序使用 eth1。可以按照以下步骤操作:

- 创建一个网络命名空间,比如叫 ns1:`ip netns add ns1`
- 将 eth1 接口移动到 ns1 命名空间中:`ip link set eth1 netns ns1`
- 在 ns1 命名空间中配置 eth1 的 IP 地址和路由:`ip netns exec ns1 ifconfig eth1 192.168.0.10/24 up` 和 `ip netns exec ns1 ip route add default via 192.168.0.1`
- 在 ns1 命名空间中运行您想要指定的程序,比如 ping:`ip netns exec ns1 ping 8.8.8.8`

这样就可以让 ping 程序使用 eth1 而不是默认的网络接口了。

(1) Network Namespaces — PF_RING dev documentation. https://www.ntop.org/guides/pf_ring/containers/namespaces.html
(2) How does `ip netns exec` command create mount namespace?. https://stackoverflow.com/questions/45629002/how-does-ip-netns-exec-command-create-mount-namespace
(3) Network Emulation using Network Namespaces and Mininet. https://www.inf.usi.ch/faculty/carzaniga/edu/adv-ntw/mininet.pdf

沒有留言:

張貼留言