172.10.22.22
공용 IP의 일부 포트를 원격 VPN IP로 전달하려고 합니다 10.22.22.22
. 로컬 VPN IP는10.22.22.1
이더넷 인터페이스는 eth0입니다. wireguard VPN 인터페이스는 wg0입니다.
이러한 nftable 규칙은 다른 네트워크 요청이 이제 삭제된다는 점을 제외하면 제대로 작동합니다.
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
masquerade
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
ip daddr 172.10.22.22 tcp dport { 3396 } dnat to 10.22.22.22;
ip daddr 172.10.22.22 udp dport 10000-10100 dnat to 10.22.22.22;
}
}
그래서 ping www.google.com
작동하지 않습니다. 이 규칙을 어떻게 수정할 수 있나요? 조언해주세요.
편집하다
대신 chain postrouting ...masquerade
을 사용하면 ofiname "wg0" masquerade
문제가 사라집니다. Masquerade라는 표현을 좀 더 구체적으로 만들 필요가 있을까요?
답변1
내 자신의 질문에 답하기 위해. 이 문제는 백 라우팅 체인의 위장 표현을 보다 구체적으로 만들어 해결됩니다.
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
# masquerade (as in question)
ofiname "wg0" masquerade
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
ip daddr 172.10.22.22 tcp dport { 3396 } dnat to 10.22.22.22;
ip daddr 172.10.22.22 udp dport 10000-10100 dnat to 10.22.22.22;
}
}