저는 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
eth0
NAT 인터페이스의 이름으로 바꿉니다 .
문제 해결 팁
- 클라이언트에서 Linux 서버의 호스트 인터페이스 주소를 ping합니다. 성공하면 클라이언트는 기본 게이트웨이에 액세스할 수 있습니다.
- 클라이언트에서 Linux 서버의 nat 인터페이스 주소를 ping합니다. 성공하면
iptables firewall
ICMP 트래픽이 허용됩니다. 그렇지 않은 경우iptables firewall
구성을 확인해야 합니다 . - 위의 단계를 완료하고 나면 남은 것은
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