Firewall-cmd 또는 다른 명령을 사용하여 다음을 수행하는 방법을 찾고 있습니다.
수신 공용 인터페이스에는 여러 IP 주소가 바인딩되어 있습니다. IP 주소 중 하나만 포트를 전달하려면 어떻게 해야 합니까?
bond0 - public:
192.168.1.100 local machine SSHD bound here.
192.168.1.200 ---> forward SSH, HTTPS to 192.168.1.53 vm bridge on machine
특정 포트에서 들어오는 모든 트래픽을 전달할 때 이 방법이 효과적 --forward-port
이지만 하나의 대상 IP로 가는 트래픽에 대해서만 이 작업을 수행하고 싶습니다.
또 다른 옵션은 모든 트래픽을 0.200에서 0.53 VM으로 라우팅하는 것이지만 이를 수행하는 방법도 모릅니다.
답변1
$ firewall-cmd --zone=external \
--add-forward-port=port=80:addr=172.16.1.1:proto=tcp:toport=80:toaddr=192.168.0.2
인용하다
"풍부한 언어" 규칙을 사용하세요
TCP 프로토콜을 사용하여 포트 4011의 1:2:3:4:6::에서 수신된 IPv6 패킷을 포트 4012의 1::2:3:4:7로 전달합니다.
rule family="ipv6" source address="1:2:3:4:6::" forward-port to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"
답변2
나는 똑같은 것을 검색하다가 우연히 이 문제를 발견했고 결국 스스로 해결책을 찾아냈습니다. 이것은 단순히 불가능합니다 --forward-port
. 강화된 규칙이 필요합니다. 원본 포스터는 오래전에 사라졌지만, 이것이 저와 같은 검색자들에게 도움이 되기를 바랍니다.
sudo firewall-cmd --add-rich-rule='rule family=ipv4 destination address="192.168.1.200" forward-port port="1-65535" protocol="tcp" to-addr="192.168.1.53"'
sudo firewall-cmd --add-rich-rule='rule family=ipv4 destination address="192.168.1.200" forward-port port="1-65535" protocol="udp" to-addr="192.168.1.53"'
다양한 포트나 다른 IP를 전달할 이유가 없었기 때문에 후자 부분이 완전히 정확하지 않을 수 있지만 관련 부분(원래 질문에 대한)은 destination address
연결을 제한하는 강화 규칙의 일부 입니다. 그 IP를 시도해보세요.