
내 로컬 네트워크에 NAT와 같은 CentOS 인스턴스가 있습니다. 내 로컬 네트워크에 일부 서브넷이 있습니다. 그 안에 PPTP VPN 서버가 있습니다. 이 서버를 인터넷에 게시해야 합니다.
그래서. 내 문제는 트래픽이 nat/PREROUTING
체인에서 체인으로 전달되지 않는다는 것입니다 filter/FORWARD
.
1.1.1.1
내 외부 IP야192.168.10.1
내 내부 IP야10.0.1.1
VPN 서버 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/PREROUTING
과filter/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 nflog
iptables 규칙에서 패킷을 캡처할 수 있습니다.-j TRACE
target - 방화벽 규칙을 통해 패킷 경로를 조사할 수 있습니다.
추신여전히 문제가 있으면 질문을 업데이트하세요.