C# 原始套接字端口转发

Sup*_*man 4 c# sockets networking portforwarding

我正在尝试创建一个简单的 C# 应用程序,它执行端口转发,并且需要知道如何使用 IP_HDRINCL 套接字选项来尝试假装接收端认为连接确实是到源。任何例子将不胜感激。

dvi*_*oen 6

sock = new Socket( AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP );
sock.Bind( new IPEndPoint( IPAddress.Parse( "10.25.2.148" ), 0 ) );
sock.SetSocketOption( SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1 );   
byte[] trueBytes = new byte[] { 1, 0, 0, 0 };
byte[] outBytes = new byte[] { 0, 0, 0, 0 };
sock.IOControl( IOControlCode.ReceiveAll, trueBytes, outBytes );
sock.BeginReceive( data, 0, data.Length, SocketFlags.None, new AsyncCallback( OnReceive ), null );
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我已经能够成功地从这样的原始套接字接收数据(包括 IP 标头),但不能发送它。