Firewalld를 사용하여 특정 서브넷만 위장하는 방법은 무엇입니까?

Firewalld를 사용하여 특정 서브넷만 위장하는 방법은 무엇입니까?

나는 뛰고있어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

이를 달성하기 위해서는 loin the trustedzone, tun0in the internalzone, eth0in 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

실제 서비스/포트는 trustedinternal영역에서 열리므로 기본값으로 두었습니다. public긴급 상황(예: 이름이 변경된 인터페이스 업데이트)에 대비해 기본 영역(기본값)에 SSH가 있는지 확인 eth0하고 해당 영역에 노출하려는 서비스를 추가했습니다 external.

masquerade기본적으로 이 영역에서는 켜져 external있고 다른 영역에서는 꺼져 있습니다.

이 설정은 다음에 적용됩니다.방화벽d-0.3.9-14.el7.noarch 루프백 인터페이스의 마스커레이딩을 제외하기 위해 별도의 영역에 배치해야 하는 이유가 무엇인지 잘 모르겠습니다. 마스커레이딩을 켜면 규칙이 설정됩니다: -A POST_external_allow ! -i lo -j MASQUERADE이 정도면 충분하지만 전문가는 아닙니다. 그러나 나는 발견했다이 오류이는 관련이 있을 수 있으며 향후 릴리스에서 문제가 해결될 수도 있습니다.

관련 정보