netfilter prerouting hook에서 고급 소스 nat를 수행하는 자체 커널 모듈을 개발 중입니다. Linux 커널 2.6.32 (Ubuntu 10.04)에서 2.6.35 (Ubuntu 10.04 lucid-back-ports)로 업그레이드 한 후에는 SNATted 패킷이 Linux 커널에 간단히 삭제 된 것으로 보입니다.netfilter prerouting hooks 소스 nat
나는 SNAT가 일반적인 사용을 위해 Prerouting 후크에서 수행되도록 권고받지 못했지만 (Netfilter mailing list), 실제 라우팅 결정을 내리기 전에 소스 natting을 선호하는 데는 몇 가지 이유가 여전히 있습니다.
2.6.35 + Linux 커널의 netfilter prerouting 후크에서 SNAT을 수행하는 커널 모듈을 개발 한 경험이 있습니까? SNATted 패킷이 삭제되지 않도록 linux-kernel/netfilter-kernel-module 코드에서 정확히 변경되어야하는 것은 무엇입니까? 어쩌면 사전 라우팅에서의 SNAT는 2.6.35+ Linux 커널에 대한 나쁜 생각 일 뿐이며 라우팅 결정에 nf_marks를 사용하고 후행 작업에서 SNAT를 더 잘 사용해야합니까?
저는 X86_64에서 Ubunut 10.04와 함께 이식 된 Linux 커널 (2.6.35)을 사용하고 있습니다.
사전 배선시 SNAT에 대한 경험이 있습니까? 어쩌면 소스 코드를 조사하고 직접 수정하는 것보다 쉬운 해결책이있을 수 있습니다 (예 : 이미 어딘가에 이미 패치가 로밍되어 있거나 어쩌면/sys 파일 시스템을 사용하여 수행 할 수 있습니다). 리눅스 코드 기반은 매우 커서, 나는 이것을 "고친"후 단 1 주 만에 모든 가능한 회귀를 분석 할 수 없다는 것을 안다. 그것이 이전에 유사한 문제를 이미 해결했을지도 모르는 전문가의 도움을 요청한 이유이기도합니다. 어쨌든 조언을 주셔서 감사합니다 :) –
그것은 크지 만 임의의 줄은 패킷을 사라지게 할 수 없습니다. 적어도'kfree_skb()'호출을 찾고있다. 무슨 일이 일어나고 있는지 모르는 시점과 모듈의 비 - 탈북성은 도움이되지 않습니다. – adobriyan