필터 테이블에서 FORWARD와 FORWARD_direct 체인의 차이점은 무엇입니까?

필터 테이블에서 FORWARD와 FORWARD_direct 체인의 차이점은 무엇입니까?

인터넷에서 SSH를 통해 가상 머신 중 하나에 액세스해야 합니다.

방화벽 테이블에 NAT 규칙을 추가했지만 작동하지 않습니다.

firewall-cmd --add-rich-rule 'rule family="ipv4" destination address=$mypublicip forward-port port="4444" protocol="tcp" to-port="22" to-addr="$myprivateip"'

더 자세히 조사한 결과 iptables를 사용하여 다음 두 규칙의 조합을 추가할 수 있다는 사실을 발견했으며 훌륭하게 작동했습니다.

iptables -t nat -I PREROUTING -p tcp --dport 4444 -j DNAT --to $myprivateip:22
iptables -I FORWARD -o virbr0 -d $myprivateip -j ACCEPT

나는 Firewall-cmd 명령줄을 좋아하기 때문에 Firewall-cmd 명령줄을 사용하여 동일한 iptables 규칙을 추가하고 다음 명령을 사용하여 이를 수행했습니다.

firewall-cmd --direct --permanent --add-rule ipv4 nat PREROUTING 0 -d $myip -p tcp --dport 4444 -j DNAT --to $myprivateip:22
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -o virbr0 -d $myprivateip -j ACCEPT

방화벽 테이블을 확인한 후 PREROUTING_direct 및 FORWARD_direct 테이블에 마지막 2개의 규칙이 있다는 것을 깨달았습니다. 이 규칙은 제대로 작동하지 않고 SSH 액세스를 제공하지 않았습니다.

PREROUTING과 PREROUTING_direct 또는 FORWARD와 FORWARD_direct 테이블의 차이점은 무엇입니까? --direct 규칙에만 사용되는 동일한 테이블인 경우 PREROUTING 및 FORWARD 테이블처럼 작동하지 않는 이유는 무엇입니까?

관련 정보