linux环境下nat程序的实现

准备在linux环境下实现nat程序。刚开始想的比较简单,以为通过libpcap抓包,libnet发包就可以实现nat功能了。

使用libpcap抓包后要分析数据包的源地址、源端口、目的地址、目的端口信息,以判断是否需要转发。要建立转发表,根据转发规则实现数据包的转发。转发过程中需要修改源地址、源端口或者目的地址、目的端口信息,并重新计算校验和,这些功能libnet都可以实现。但出现了问题,libpcap抓取的数据包会被交付给系统内核处理,内核处理时发现数据包所指的目的端口在本机并未被开启,就发送了端口不可达的错误,这样就造成了通信信息不可达。

在网上搜了一下,发现linux提供了netfilter机制为内核数据包处理过程提供了函数接口,现在还没有开始尝试,,,,尽快弄。。。

小记:libpcap也是基于linux原始套接字的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值