목적지가 ipset에 있는 패킷을 nat 인터페이스로 라우팅하는 방법

목적지가 ipset에 있는 패킷을 nat 인터페이스로 라우팅하는 방법

nat 인터페이스인 em2라는 인터페이스가 있습니다. 목적지가 test라는 ipset에 있는 모든 패킷을 em2로 라우팅하고 싶습니다.

ipset과 정책 라우팅을 사용하지 않으면 잘 작동합니다.

iptables -A POSTROUTING -t nat -o em2  -j MASQUERADE
ip route add 1.1.1.1 via 10.1.1.13 dev em2

하지만 정책 라우팅과 ipset을 사용하면

iptables -A POSTROUTING -t nat -o em2  -j MASQUERADE
ip rule add fwmark 1 lookup 100
ip route add default via 10.1.1.13 dev em2 table 100
ipset create test hash:ip
ipset add test 1.1.1.1
iptables -t mangle -N TEST_ROUTE
iptables -t mangle -A TEST_ROUTE -m set --match-set test dst -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -j TEST
iptables -t mangle -A PREROUTING -j TEST

문제는 모든 패킷이 em2로 완벽하게 라우팅되지만 응답 패킷을 수신할 수 없다는 것입니다. tcpdump 캡처에 따르면 응답 패킷이 NAT를 올바르게 수행하지 않은 것 같습니다. 내가 놓친 게 무엇입니까?

tcpdump 캡처는 다음과 같이 표시됩니다. 10.1.1.14는 em2의 주소입니다.

18:57:39.696669 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:39.753114 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.250.66.100 (59)
18:57:44.701781 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:44.745936 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.250.66.100 (59)
18:57:49.706916 IP 10.1.1.14.40169 > 1.1.1.1.53: 28094+ [1au] A? www.google.com. (55)
18:57:49.750357 IP 1.1.1.1.53 > 10.1.1.14.40169: 28094 1/0/1 A 142.251.220.4 (59)

패킷과 함께 1.1.1.1 응답을 볼 수 있지만 dig에는 아무것도 없습니다.

관련 정보