作者yatung1700 (阿呆学程式)
看板Python
标题Re: [问题] 如果接收由firewall转送(forward)过来ꨠ…
时间Tue May 16 12:30:15 2006
※ 引述《yatung1700 (阿呆学程式)》之铭言:
: 标题: Re: [问题] 如果接收由firewall转送(forward)过来ꨠ…
: 时间: Mon May 15 18:47:04 2006
:
: ※ 引述《yatung1700 (阿呆学程式)》之铭言:
: : 标题: [问题] 如果接收由firewall转送(forward)过来的封包?
: : 时间: Sun May 14 17:24:32 2006
: :
: : 各位同好大家好:
: : 我在firewall上设定将所有封包转送至某一台机器上,在该机器上,我建一个socket,
: : 不论是tcp or udp都试过,但…都无法接收到forward过来的封包,到底要如何才能接
: : 收转来的封包呢?
: :
: : [udp receive server]
: : =======================
: : import socket
: :
: : sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
: : sock.bind(('',999))
: : while 1:
: : line=sock.recvfrom(8096)
: : print line
: :
: :
: : ==>firewall转送封包过来,此程式一直都没有反应。我另发送udp封包给此server时,
: : 接收是没问题的。所以应该是我用错接收方式。不知要如何接收才正确呢?
: : (firewall转送封包是没问题的!^_^)
: :
: : --
: :
※ 发信站: 批踢踢实业坊(ptt.cc)
: : ◆ From: 220.133.38.221
: : 推 ericsk:把 recvfrom 换成 recv 试试看 05/14 20:14
:
: 感谢楼上的回答。但.......
: recv()是用在TCP protocol上的,而TCP socket我试过了,也是不行耶!
: 还有什麽方法吗?
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 140.115.130.163
: 推 ericsk:你要不要用别的工具看封包?比方说 tcp_dump 05/15 21:11
我不是要看封包,我是要接收firewall转送(forward)过来的封包!^_^
我要对这些封包做处理,譬如更改、再转送出去等等…
所以我想开一个socket接受这些封包。
我在C++版也post文章询问,有人回覆说用SOCK_RAW可以接收forward来的封包,
但我若用s=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_RAW)
s.bind(("",999))
无法bind()成功。bind()时虽不会有错误产生,但用netstat -a却看不到999这个port有
被用到,当然,也接收不到任何封包。不知这个SOCK_RAW正确用法为何?抑或是有其它
更佳的方法呢?^_^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.38.221
1F:推 ericsk:会希望你用tcpdump看,主要就是看封包的dest到底对不对 05/16 12:52
2F:推 ericsk:如果最後一个参数改成 socket.IPPROTO_UDP 符合你的需求吗 05/16 13:35
3F:推 yatung1700:tcpdump我试试。 IPPROTO_UDP也是不行的!^_^ 05/16 18:49