IPTable을 사용하여 내부 네트워크에서 인터넷 액세스

IPTable을 사용하여 내부 네트워크에서 인터넷 액세스

제가 설정 중인 프라이빗 클라우드에는 OpenStack에 몇 개의 RHEL VM, 네트워크 및 라우터가 있습니다. 내 라우터는 공용 인터넷에 연결되어 있고 내 게이트웨이 노드는 라우터에 연결되어 있으며 eth0을 통해 인터넷에 액세스할 수 있습니다. 노드는 eth1의 내부 네트워크에 연결됩니다. eth0 인터페이스의 내부 네트워크에 연결된 몇 개의 내부 RHEL 노드가 있습니다. 노드는 모두 서로 ping할 수 있으며 각 노드의 ifcfg 파일이 올바르게 설정되었다고 생각합니다.

IPTables를 사용하여 다음과 같이 내부 노드에 인터넷 액세스를 제공하려고 했습니다.

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT  
iptables -A FORWARD -i eth0 -o eth1 -m conntrack -ctstate ESTABLISHED,RELATED -j ACCEPT  
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

또한 커널 수준에서 ipv4 전달(기본적으로 비활성화됨)을 활성화했습니다. 구성을 저장하고 SSH를 내부 노드에 저장한 후 외부 주소를 ping할 수 없습니다.

# ping 8.8.8.8
connect: Network is unreachable


OpenStack의 내 라우터에는 대상 CIDR: 내 내부 네트워크
다음 홉: 내 게이트웨이 노드가 포함된 고정 경로가 있습니다.

내부 노드에서 인터넷에 액세스할 수 없는 이유는 무엇입니까? 내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

커널에서 전달을 활성화하지 않았을 수 있습니다.

노력하다

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

문제가 해결되면 /etc/sysctl.conf를 편집하고 다음 행을 추가하여 영구적으로 만드십시오.

net.ipv4.ip_forward = 1

답변2

Network is unreachable8.8.8.8에 도달하도록 정의된 경로가 없음을 의미합니다. 이는 VM에서 직접 반환한 문제일 가능성이 높으며 호스트가 아닌 VM에 있는 문제입니다.

OpenStack에는 다양한 네트워크 구성이 가능합니다. 방금 "네트워크"라고 썼고 VM의 IP에 대한 정보를 제공하지 않았습니다. 알 수 없는 설정(중간 NAT가 완료된 중간 네트워크)이 없기를 바라며, 각 VM에서 라우터 eth1인터페이스에 설정된 IP를 통해 기본 경로를 추가해야 합니다. 예를 들어 이 IP가 10.0.2.1이면 다음과 같이 됩니다.

ip route add default via 10.0.2.1

영구 설정의 경우 특정 구성 파일에 추가해야 합니다(참조정적 경로 및 기본 게이트웨이Redhat에서).

관련 정보