AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1718181
Accepted
ph3ro
ph3ro
Asked: 2022-04-27 12:54:15 +0800 CST2022-04-27 12:54:15 +0800 CST 2022-04-27 12:54:15 +0800 CST

如何通过其他接口传递流量

  • 772

我的虚拟机上共有 4 个接口,其中 enp0s3 是主接口,其他接口是辅助接口

ip 输出

[root@vm]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 xdp/id:1 qdisc sfq state UP group default qlen 1000
    link/ether 02:00:17:01:c1:5d brd ff:ff:ff:ff:ff:ff
    inet 100.10.10.100/24 brd 100.10.10.255 scope global dynamic enp0s3
       valid_lft 81440sec preferred_lft 81440sec
    inet6 fe80::17ff:fe01:c15d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 02:00:17:01:6c:5d brd ff:ff:ff:ff:ff:ff
    inet 100.10.10.101/24 scope global enp1s0
       valid_lft forever preferred_lft forever
4: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 02:00:17:00:a2:f3 brd ff:ff:ff:ff:ff:ff
    inet 100.10.10.102/24 scope global enp2s0
       valid_lft forever preferred_lft forever
5: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 02:00:17:01:a7:4e brd ff:ff:ff:ff:ff:ff
    inet 100.10.10.103/24 scope global enp3s0
       valid_lft forever preferred_lft forever

我正在使用规则将来自端口 9100、9101、9102、9103 的传入流量重定向到某些特定 ip

iptables -t nat -A PREROUTING -p udp --dport 9100 -j DNAT --to 1.1.1.1:9100
iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 9100 -j MASQUERADE

iptables -t nat -A PREROUTING -p udp --dport 9101 -j DNAT --to 2.2.2.2:9101
iptables -t nat -A POSTROUTING -p udp -d 2.2.2.2 --dport 9101 -j MASQUERADE

iptables -t nat -A PREROUTING -p udp --dport 9102 -j DNAT --to 3.3.3.3:9102
iptables -t nat -A POSTROUTING -p udp -d 3.3.3.3 --dport 9102 -j MASQUERADE

iptables -t nat -A PREROUTING -p udp --dport 9103 -j DNAT --to 4.4.4.4:9103
iptables -t nat -A POSTROUTING -p udp -d 4.4.4.4 --dport 9103 -j MASQUERADE

iptables -t nat -A PREROUTING -p udp --dport 1245 -j DNAT --to 5.5.5.5:1245
iptables -t nat -A POSTROUTING -p udp -d 5.5.5.5 --dport 1245 -j MASQUERADE

我希望1.1.1.1 和 2.2.2.2应该通过来自enp2s0的流量,而3.3.3.3 和 4.4.4.4应该通过来自enp3s0的流量

IP 5.5.5.5它希望流量从enp1s0传递,所以我使用了逗号

ip route add 100.10.10.0/24 dev enp1s0 scope link metric 1000 table main
ip route add 5.5.5.5/32 via 100.10.10.1 dev enp1s0 table main

有效

但是当我对其他接口使用相同的规则时它不起作用我从下面使用这些规则

ip route add 100.10.10.0/24 dev enp2s0 scope link metric 1000 table main
ip route add 1.1.1.1/32 via 100.10.10.1 dev enp2s0 table main

ip route add 100.10.10.0/24 dev enp2s0 scope link metric 1000 table main
ip route add 2.2.2.2/32 via 100.10.10.1 dev enp2s0 table main

ip route add 100.10.10.0/24 dev enp3s0 scope link metric 1000 table main
ip route add 3.3.3.3/32 via 100.10.10.1 dev enp3s0 table main

ip route add 100.10.10.0/24 dev enp3s0 scope link metric 1000 table main
ip route add 4.4.4.4/32 via 100.10.10.1 dev enp3s0 table main

在这种情况下,有人可以帮助我吗?我不擅长路由。提前致谢

linux networking
  • 1 1 个回答
  • 202 Views

1 个回答

  • Voted
  1. Best Answer
    Tom Yan
    2022-04-28T06:18:16+08:002022-04-28T06:18:16+08:00

    假设enp0s3被认为是“默认”接口(即,您要用于目标、LAN 或 WAN 的接口,未专门“分配”给接口),当您在其余接口上添加/配置地址时,您应该使用前缀长度/32而不是/24(或者,您可以使用标志noprefixroute来代替;我不知道这样做的潜在优点是什么):

    ip a add 100.10.10.101/32 dev enp1s0
    ip a add 100.10.10.102/32 dev enp2s0
    ip a add 100.10.10.103/32 dev enp3s0
    

    onlink然后您可以使用以下标志添加所需的间接路由:

    ip r add 1.1.1.1 via 100.10.10.1 dev enp2s0 src 100.10.10.102 onlink
    ip r add 2.2.2.2 via 100.10.10.1 dev enp2s0 src 100.10.10.102 onlink
    ip r add 3.3.3.3 via 100.10.10.1 dev enp3s0 src 100.10.10.103 onlink
    ip r add 4.4.4.4 via 100.10.10.1 dev enp3s0 src 100.10.10.103 onlink
    ip r add 5.5.5.5 via 100.10.10.1 dev enp1s0 src 100.10.10.101 onlink
    

    (显然,当您使用 时onlink,该src 100.10.10.x部分对于流量使用在相应接口上配置的地址作为源地址至关重要,因此请确保不要忽略该部分)


    或者,您可以改用基于目标的策略路由。

    使用将使用额外接口的路由创建额外的路由表:

    ip r add 100.10.10.0/24 dev enp1s0 table 101
    ip r add default via 100.10.10.1 table 101
    ip r add 100.10.10.0/24 dev enp2s0 table 102
    ip r add default via 100.10.10.1 table 102
    ip r add 100.10.10.0/24 dev enp3s0 table 103
    ip r add default via 100.10.10.1 table 103
    

    (上面的间接路由将dev根据覆盖其 nexthop 的同一表中的直接路由设置相应的部分100.10.10.1,这就是您可以省略它的原因,但当然您也可以明确指定它)

    然后添加 ip 规则,使具有特定目标地址的流量使用这些表:

    ip ru add to 1.1.1.1 lookup 102
    ip ru add to 2.2.2.2 lookup 102
    ip ru add to 3.3.3.3 lookup 103
    ip ru add to 4.4.4.4 lookup 103
    ip ru add to 5.5.5.5 lookup 101
    
    • 0

相关问题

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve