나는 이 질문에 대해 이전에 100번 이상 대답했다고 생각합니다. 그러나 나는 잘못된 방향을 보고 있다고 거의 확신합니다. 제가 원하는 설정은 다음과 같습니다.
KVM과 libvirt를 사용하는 가상 호스트가 있습니다. 서버 네트워크로 확장하려는 간단한 192.168.1.0/24 홈 네트워크가 있습니다. 새 네트워크로 192.168.12.0/24를 사용하겠습니다. 하지만 일반 네트워크에서는 여전히 몇 대의 서버가 실행될 것이기 때문에 libvirt에 가상 네트워크를 추가했습니다. 기본적으로 나는 br0(eth0의 브리지)과 virbr0(가상 네트워크 인터페이스) 사이를 라우팅하고 싶습니다. iptables를 사용하여 트래픽을 라우팅하려고 하며 네트워크에 액세스하기 위해 다음 명령을 사용하여 트래픽을 관리했습니다.
iptables -I FORWARD -d 192.168.12.0/24 -s 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.12.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -d 192.168.1.0/24 -s 0.0.0.0/0 -j ACCEPT
누군가 나에게 올바른 방향을 알려줄 수 있습니까?
편집 1: 답변해 주셔서 감사합니다. 커널 규칙을 완전히 잊어버리고 적용했습니다. 이제 192.168.1.0/24 네트워크에서 시스템을 ping할 수 있으며 그 반대의 경우도 마찬가지입니다. 하지만 불행하게도 이 컴퓨터에 ssh를 보낼 수 없으며 192.168.1.0/24(물론 원래 네트워크도 포함) 이외의 다른 컴퓨터로 ping을 보낼 수 없습니다. "코어" 라우터는 모든 것을 서버 네트워크인 kvm 하이퍼바이저로 라우팅하도록 올바르게 구성되었습니다.
또한 브리지를 라우팅된 인터페이스로 만드는 것을 고려하고 이제 "외부" 인터페이스인 새 인터페이스(eth0:1)를 추가했지만 그래도 아무 것도 변경되지 않습니다.
답변1
iptables는 트래픽 정책을 정의하는 데 사용됩니다. 전달 규칙을 추가해도 전달이 활성화되지 않습니다. 해당 sysctl 키를 설정해야 합니다. 즉,
sysctl net.ipv4.conf.br0.forwarding=1
sysctl net.ipv4.conf.virbr0.forwarding=1
마찬가지로, 당신은 발행 할 수 있습니다
echo 1 > /proc/sys/net/ipv4/conf/br0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/virbr0/forwarding
설정에 따라 적절한 경로 테이블 항목을 추가해야 할 수도 있습니다.