게스트에서 yum을 사용할 수 없습니다. 호스트의 iptables에서 포트 80 전달에 결함이 있는 것으로 의심됩니까?

게스트에서 yum을 사용할 수 없습니다. 호스트의 iptables에서 포트 80 전달에 결함이 있는 것으로 의심됩니까?

이 설정에 어떤 문제가 있나요? 호스트와 게스트 모두 CentOS 6.5입니다.

특히 게스트에서는 yum을 실행할 수 없습니다.

mirrorlist.centos.org 핑을 포함하여 게스트와 행복하게 핑할 수 있습니다.

호스트 iptables(아래 참조)에서 포트 80 규칙을 제거하면 yum이 제대로 작동합니다. 하지만 게스트를 공개적으로 액세스 가능한 웹 서버로 사용하려면 해당 규칙을 적용해야 합니다.

냠 업데이트 출력:

Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
12: Timeout on http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os: (28, 'connect() timed out!')
Error: Cannot find a valid baseurl for repo: base

게스트의 IP는 192.168.122.47이고 아래에 설정한 SSH 포트 전달은 작동하지만 yum은 작동하지 않습니다.

게스트 iptables가 비활성화되었습니다.

호스트 iptables:

# Generated by iptables-save v1.4.7 on Sat May 10 15:54:24 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:560]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sat May 10 15:54:24 2014
# Generated by iptables-save v1.4.7 on Sat May 10 15:54:24 2014
*mangle
:PREROUTING ACCEPT [4:316]
:INPUT ACCEPT [4:316]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:560]
:POSTROUTING ACCEPT [4:560]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Sat May 10 15:54:24 2014
# Generated by iptables-save v1.4.7 on Sat May 10 15:54:24 2014
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 792 -j DNAT --to-destination 192.168.122.47:22
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.122.47:80
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Sat May 10 15:54:24 2014

답변1

당신은 NAT를 과도하게 사용하고 있습니다. 당신은 NAT를 하고 있는 것뿐만 아니라~에포트 80에 연결을 바인딩했지만밖으로묶인 것들도 마찬가지다. NAT 규칙을 수정하여 트래픽이 외부에서 들어오도록 지정합니다. 예:

-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j DNAT --to-destination 192.168.122.47:80

그리고 외부 웹 서버에 대한 합법적인 아웃바운드 트래픽의 일치(및 방해)를 중지합니다.

관련 정보