방화벽 관리 프로그램으로 firewalld를 사용하는 경우, 여러가지 요인에 의해 pptpd 연결에 문제가 발생할 수 있습니다. pptpd 로그에 따른 에러 처리방법은 각각 다음과 같습니다.
CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
# firewall-cmd --permanent --add-source=192.168.0.0/24
pptpd.conf에 설정해둔 remoteip 범위가 192.168.0.0/24라고 가정할 때, 해당 ip대역을 모든 서비스에서 사용할 수 있도록 설정해줘야 합니다.
슈퍼유저가 아니라면 에러가 날수 있으니 꼭 sudo를 붙여 root권한으로 실행시키도록 합시다.
CTRL: EOF or bad error reading ctrl packet length.
CTRL: couldn't read packet header (exit)
CTRL: CTRL read failed
# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
GRE 헤더를 수신하지 못하기 때문에 발생하는 에러입니다. 위 명령을 입력하여 firewalld에서 GRE 터널링을 허용합니다.
구글링을 조금 해보니 47번 포트를 개방하라는 이야기도 있던데, 제 경우는 하지 않아도 됐습니다.
# firewall-cmd --reload
firewalld를 리로드하면 이제 정상적으로 연결이 될 것입니다.
만약 그래도 계속 방화벽으로 인한 연결 오류가 발생할 경우, vpn전용 서버라면 그냥 firewalld를 해제하고 사용하는 것도 나쁘지 않습니다.
pptpd 서버 구축에 관한 내용은 다음 블로그를 참조