当我使用-j REDIRECT
规则在Linux上重定向与iptables的连接时,接收重定向连接的程序可以执行getsockopt(sockfd, SOL_IP, SO_ORIGINAL_DST, &val, &len);
以获取连接的原始预重定向目标IP 。当我使用rdr
规则在FreeBSD上使用pf重定向连接时,我该怎么做?
答案 0 :(得分:1)
昨天刚刚在MacOS上解决了这个问题,没有在FreeBSD上进行测试,我认为这很相似。
您需要net/pfvar.h
中的pfioc_natlook结构。
常规步骤是:
pfioc_natlook
初始化为pnl
rdxport
和rdaddr
将成为连接的原始端口和ip 任何对此问题仍然感兴趣的人都可以检查以下要点:https://gist.github.com/gkoyuncu/f8aad43f66815dac7769
我用golang(CGO包装器)制作了一个迷你POC程序,它可在MacOS上运行:https://github.com/monsterxx03/pf_poc