Linux 서버를 라우터로 사용 - 문제

Linux 서버를 라우터로 사용 - 문제

저는 Linux를 처음 접했고 제 환경에서 무언가를 테스트하려고 합니다.
2개의 네트워크를 연결하기 위해 Linux 서버(fedora)를 설정했습니다.
서버에는 세 번째 네트워크 카드가 있습니다(virtualbox를 통해 호스트와 공유).
Linux 서버에서 성공적으로 탐색할 수 있지만 클라이언트에서 8.8.8.8 또는 이와 유사한 ping을 시도하면 작동하지 않습니다.
클라이언트 기본 라우팅이 iptables에서 icmp를 허용합니다.

내가 무엇을 놓치고 있나요?

답변1

위에 언급한 대로 더 많은 정보를 제공하면 더 나은 결과를 얻을 수 있습니다. 아래 제안된 솔루션은 iptables입출력 트래픽을 허용하도록 설정되었을 것으로 예상됩니다. 그럼에도 불구하고 아마도 두 가지를 놓치고 있을 것입니다.

전달된 트래픽을 명시적으로 허용해야 합니다. 다음 줄을 추가하려면 /etc/sysctl.conf`를 수정해야 합니다.

net.ipv4.ip_forward=1

또한 나가는 트래픽을 위장해야 합니다. 매스커레이딩은 NAT 연결 네트워크 카드가 있는 호스트에 모든 패킷의 나가는 IP 주소를 다시 씁니다. 아래와 같이 매스커레이딩을 활성화할 수 있습니다. NAT 인터페이스 이름을 기록해 두십시오.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0NAT 인터페이스의 이름으로 바꿉니다 .

문제 해결 팁

  1. 클라이언트에서 Linux 서버의 호스트 인터페이스 주소를 ping합니다. 성공하면 클라이언트는 기본 게이트웨이에 액세스할 수 있습니다.
  2. 클라이언트에서 Linux 서버의 nat 인터페이스 주소를 ping합니다. 성공하면 iptables firewallICMP 트래픽이 허용됩니다. 그렇지 않은 경우 iptables firewall구성을 확인해야 합니다 .
  3. 위의 단계를 완료하고 나면 남은 것은 outgoing rules합계 뿐입니다 postrouting masquerade. 다시 확인하고 싶을 수도 있습니다.

답변2

당신 말이 맞아요. 다음과 같이 가장하고 전달하는 POSTROUTING이 누락되었습니다.

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

관련 정보