当前位置: 技术问答>linux和unix
高分求助linux数据包转发编程问题
来源: 互联网 发布时间:2016-07-29
本文导语: 局域网中两台主机A和B,B的IP地址是A的网关,A要访问互联网,现已在B处通过socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)获得A的以太网数据帧,如何将其继续发送给目标主机? (若在B主机的etc/sysctl.conf中把#net.ipv4.ip_forward=1的注释...
局域网中两台主机A和B,B的IP地址是A的网关,A要访问互联网,现已在B处通过socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)获得A的以太网数据帧,如何将其继续发送给目标主机?
(若在B主机的etc/sysctl.conf中把#net.ipv4.ip_forward=1的注释去掉即可实现,请问如何编程实现ip_forward?求示例代码)
(若在B主机的etc/sysctl.conf中把#net.ipv4.ip_forward=1的注释去掉即可实现,请问如何编程实现ip_forward?求示例代码)
|
iptables里面的参数要注意,尽量针对源地址进行DROP等操作
|
可以直接system()调用sysctl来使用ipforward.
你需要的是查询B的路由表,然后跟包的目的地址比较决定是直接发往一台机器,还是发往下一跳的路由器地址
你需要的是查询B的路由表,然后跟包的目的地址比较决定是直接发往一台机器,还是发往下一跳的路由器地址
|
B的IP地址是A的网关?
--------------------------
A的地址是谁来分配的? A不能直接和B的网关直连吧?
ip_forward ,这个可以系统启动后在通过proc文件配置启动的。这个选项应该只是包的转发而已。
怎么我看你的需求有点像 iptables的NAT 功能啊!这个用netfilter来做更好吧,socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)的办法应该是不恩嗯过滤包的。
--------------------------
A的地址是谁来分配的? A不能直接和B的网关直连吧?
ip_forward ,这个可以系统启动后在通过proc文件配置启动的。这个选项应该只是包的转发而已。
怎么我看你的需求有点像 iptables的NAT 功能啊!这个用netfilter来做更好吧,socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)的办法应该是不恩嗯过滤包的。
|
帮顶一下
说不定源码里有 嘿嘿
说不定源码里有 嘿嘿
|
这几天高手多 一会就有人给你回答了
|
帮顶一下