CentOS 7 NAT 라우팅 및 IPTABLES

CentOS 7 NAT 라우팅 및 IPTABLES

내 로컬 네트워크에 NAT와 같은 CentOS 인스턴스가 있습니다. 내 로컬 네트워크에 일부 서브넷이 있습니다. 그 안에 PPTP VPN 서버가 있습니다. 이 서버를 인터넷에 게시해야 합니다.

그래서. 내 문제는 트래픽이 nat/PREROUTING체인에서 체인으로 전달되지 않는다는 것입니다 filter/FORWARD.

  • 1.1.1.1내 외부 IP야
  • 192.168.10.1내 내부 IP야
  • 10.0.1.1VPN 서버 IP입니다
  • eth0외부 인터페이스입니다
  • eth1내부 인터페이스입니다

NAT 규칙(작동 PKTS하고 BYTES변경되었습니다)

-A PREROUTING -d 1.1.1.1/32 -i eth0 -p tcp -m tcp --dport 1723 -j DNAT --to-destination 10.0.1.1
-A PREROUTING -d 1.1.1.1/32 -i eth0 -p gre -j DNAT --to-destination 10.0.1.1

필터 규칙(작동하지 않으며 변경되지 않습니다 PKTS)BYTES

-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p tcp -m tcp --dport 1723 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p tcp -m tcp --sport 1723 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.0.1.1/32 -i eth0 -o eth1 -p gre -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.0.1.1/32 -i eth1 -o eth0 -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT

물론 NAT 서버에서 net.ipv4.ip_forward = 1핑을 보낼 수도 있습니다 .10.0.1.1

포트 1723 은 tcpdump외부 인터페이스에서만 작업을 표시했습니다.

나는 아무 생각이 없습니다.

UPD1. 으로 라우팅을 확인 ip route get 10.0.1.1 from <src> iif eth0했고 RTNETLINK answers: Invalid argument. 그건 그렇고 나는 어떤 대답을 얻었고 어떤 iif이름 ( eth0, eth1, eth2)을 사용했습니다. 유효한 경로를 얻은 후에만 iif인수를 사용하지 않았습니다.

UPD2. 먼저 체인 -A FORWARD -d 10.0.1.1/32 -j ACCEPT에 규칙을 추가했습니다 . filter/FORWARD하지만 아무것도 아니야. 패킷과 바이트가 0이었습니다.

답변1

  • 다른 규칙은 매우 중요합니다. 그리고 규칙의 순서도 마찬가지입니다. 따라서 iptables-save -c명령의 출력을 확인하십시오. 당신이 만든 것 이상의 규칙을 조사하십시오.

  • 체인 nat/PREROUTINGfilter/FORWARD체인 사이에서 라우팅 결정이 내려집니다. 으로 라우팅을 확인하세요 ip route get 10.0.1.1 from <src> iif eth0. 유효한 경로를 반환해야 합니다. 다른 내용이라면 질문에 붙여넣으세요.

  • 또한 명령의 출력을 조사합니다 nstat -az.

  • NAT를 통해 pptp를 전달하려면 conntrack용 모듈을 로드해야 합니다.

    • nf_conntrack_proto_gre
    • nf_nat_proto_gre
    • nf_conntrack_pptp
    • nf_nat_pptp
  • 최근 커널에서는 특히 pptp의 경우 conntrack 도우미를 명시적으로 활성화해야 합니다. 따라서 추가 규칙을 추가해야 합니다.

iptables -t raw -A PREROUTING -p tcp -m tcp --dport 1723 -j CT --helper pptp
  • 도우미를 활성화하는 다른 방법은 sysctl 명령입니다.
sysctl -w net.netfilter.nf_conntrack_helper=1
  • 문제를 해결하기 위한 기타 도구:
    • conntrack -E- conntrack 이벤트 모니터링
    • tcpdump
    • -j NFLOG- tcpdump -ni nflogiptables 규칙에서 패킷을 캡처할 수 있습니다.
    • -j TRACEtarget - 방화벽 규칙을 통해 패킷 경로를 조사할 수 있습니다.

추신여전히 문제가 있으면 질문을 업데이트하세요.

관련 정보