我正在尝试创建一个 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"
如果我更改1
为0
然后我收到另一个错误,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
事实证明,我忘记禁用系统上的默认防火墙和网络管理器,因此我正在后台运行,SuSeFirewall2
这wicked
弄乱了我的设置。
我最终的网络设置是这样的
#!/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
,但现在它很有魅力。
:-)