如何使用 iproute2 从隔离接口路由互联网连接?

如何使用 iproute2 从隔离接口路由互联网连接?

我正在尝试创建一个 dhcp 服务器,iproute2并且 DHCP 部分工作正常,但客户端无法获得任何互联网。

主机从 192.168.150.0/25 网络获取互联网,并充当子网 192.168.169.0/24 的路由器/DHCP 服务器。

当我将客户端连接到与主机相同的接口时,客户端将从正确的 IP 地址范围获取 IP。

这是我的网络配置。

# Starting interfaces
ip link set dev eth0 up 
ip link set dev eth1 up

# Assigning addresses to interface 
ip addr add "192.168.150.29/25" dev eth0 brd +
ip addr add "192.168.169.1/24" dev eth1 brd +

# Specifying how eth0 will get his internet.
ip route add default dev eth0 via "192.168.150.1" scope global

我的问题是如何将互联网连接从 eth0 路由到 eth1。

我试图添加这样的路线:

ip route add "192.168.169.1/24" dev eht0

和类似的,但它说,wrong prefix当我有"192.168.169.1"如果我更改10然后我收到另一个错误,File exists或者Nexthop has invalid gateway.

先感谢您

另请注意:我不知道这是否重要,但是 eth0 和 eth1 都桥接到在 libvirt 上运行的机器。

答案1

您需要ip route add default via 192.168.169.1 dev eht0在客户端上执行操作或通过 DHCP 服务器推送路由(取决于您使用哪一个,您没有在问题中指定)。还要确保您已启用 ip_forwarding ( /proc/sys/net/ipv4/ip_forward= 1) 并确保您已通过 iptables/nftables 启用了伪装 (NAT)。或者,如果您使用 IP 192.168.150.29 控制机器,您可以添加到那里ip route add 192.168.169.0/24 via 192.168.150.29并避免伪装。

答案2

事实证明,我忘记禁用系统上的默认防火墙和网络管理器,因此我正在后台运行,SuSeFirewall2wicked弄乱了我的设置。

我最终的网络设置是这样的

#!/bin/bash

case "$1" in
start)
        echo "Starting the network"


        echo "search my.dns.server.ext" > /etc/resolv.conf
        echo "nameserver 192.168.150.1" >> /etc/resolv.conf

        ip addr add "192.168.150.29/25" dev eth0 brd +
        ip addr add "192.168.169.1/24" dev eth1 brd +
        ip link set dev eth0 up
        ip link set dev eth1 up
        ip route add default via 192.168.150.1 scope global

        echo 1 > /proc/sys/net/ipv4/ip_forward

        ;;
stop)
        echo "Stopping the network"
        ip addr flush eth0
        ip addr flush eth1
        ip link set dev eth0 down 
        ip link set dev eth1 down 
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo "Usage $0 [start|stop|restart]"
esac

在禁用 wicked 后,我还必须手动设置 DNS /etc/resolv.conf,但现在它很有魅力。

:-)

相关内容