나는 뛰고있어CentOS 7의 openvpn그리고방화벽. 공개(기본) 영역에서 클로킹을 활성화했는데 훌륭하게 작동합니다. 그러나 때때로 localhost/127.0.0.1에서 서비스를 실행해야 하는데 가장하면 문제가 발생합니다. 서비스는 127.0.0.1에 올바르게 바인딩되지만 연결을 시도하는 클라이언트 코드는 대상 IP 주소 127.0.0.1을 서버가 수신하지 않는 IP 주소 eth0에 매핑하는 것 같습니다(127.0.0.0으로 구성되었습니다. 0) .0.1 )만 가능합니다.
openvpn이 계속 작동하면서도 가장 간섭 없이 localhost의 로컬 서비스에 액세스할 수 있도록 매스커레이딩을 특정 서브넷으로만 제한하려면 어떻게 해야 합니까?
내 질문을 표현하는 또 다른 방법은 다음과 같습니다. 루프백 주소 스푸핑을 방지하는 방법은 무엇입니까?
몇 가지 아이디어가 있지만 어떻게 해야 할지 모르겠습니다(또는 다른 작업을 중단하지 않고 수행할 수 있음).
- openvpn 위장을 10.8.0.0/16으로 제한
- eth0의 IP 주소를 다른 영역으로 이동하여 매스커레이딩을 제한합니다.
- 루프백 인터페이스를 신뢰할 수 있는 영역으로 이동하고 eth0의 IP 주소를 신뢰할 수 있는 영역의 소스로 추가하여 매스커레이딩을 허용합니다.
답변1
해결책을 찾았습니다.
external
interfaces: eth0
masquerade: yes
internal
interfaces: tun0
masquerade: no
public (default)
interfaces: # not used
masquerade: no
trusted
interfaces: lo
masquerade: no
이를 달성하기 위해서는 lo
in the trusted
zone, tun0
in the internal
zone, eth0
in the zone 임을 명시적으로 선언해야 합니다 external
. 이를 위해 다음을 사용했습니다(예:).
firewall-cmd --permanent --zone=external --add-interface=eth0
firewall-cmd --permanent --zone=internal --add-interface=tun0
firewall-cmd --permanent --zone=trusted --add-interface=lo
firewall-cmd --reload
의 경우 재부팅 후에도 계속 작동하려면 을 추가 eth0
해야 합니다 . 다른 인터페이스에는 필요하지 않습니다.ZONE="external"
/etc/sysconfig/network-scripts/ifcfg-eth0
실제 서비스/포트는 trusted
및 internal
영역에서 열리므로 기본값으로 두었습니다. public
긴급 상황(예: 이름이 변경된 인터페이스 업데이트)에 대비해 기본 영역(기본값)에 SSH가 있는지 확인 eth0
하고 해당 영역에 노출하려는 서비스를 추가했습니다 external
.
masquerade
기본적으로 이 영역에서는 켜져 external
있고 다른 영역에서는 꺼져 있습니다.
이 설정은 다음에 적용됩니다.방화벽d-0.3.9-14.el7.noarch
루프백 인터페이스의 마스커레이딩을 제외하기 위해 별도의 영역에 배치해야 하는 이유가 무엇인지 잘 모르겠습니다. 마스커레이딩을 켜면 규칙이 설정됩니다: -A POST_external_allow ! -i lo -j MASQUERADE
이 정도면 충분하지만 전문가는 아닙니다. 그러나 나는 발견했다이 오류이는 관련이 있을 수 있으며 향후 릴리스에서 문제가 해결될 수도 있습니다.