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
또한 evil을 비활성화한 후 수동으로 DNS를 설정해야 했는데 /etc/resolv.conf
이제는 정말 매력적으로 작동합니다.
:-)