Networking 如何删除“;IPv4地址参数";Ubuntu中SCTP数据包中的字段(可选)
我想使用Ubuntu20.04中的L2TP VPN向服务器发送一个SCTP数据包。为此,我设置了L2TP VPN,可以使用Networking 如何删除“;IPv4地址参数";Ubuntu中SCTP数据包中的字段(可选),networking,ipv4,packet-capture,sctp,transport-layer-protocol,Networking,Ipv4,Packet Capture,Sctp,Transport Layer Protocol,我想使用Ubuntu20.04中的L2TP VPN向服务器发送一个SCTP数据包。为此,我设置了L2TP VPN,可以使用ping命令成功测试连接。现在我的ifconfig输出如下: enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet x.x.x.x netmask 255.255.255.248 broadcast p.p.p.p ... lo: flags=73&l
ping
命令成功测试连接。现在我的ifconfig
输出如下:
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.x.x.x netmask 255.255.255.248 broadcast p.p.p.p
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
...
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1400
inet y.y.y.y netmask 255.255.255.255 destination q.q.q.q
...
最后,这里是发送和接收的数据包:
我认为我的INIT数据包中的IPv4地址参数(地址:x.x.x.x)(我的LAN IP)导致从服务器接收中止数据包。当我关闭VPN时,这两个可选字段不会出现
打开VPN后,如何删除Ubuntu中的这两个可选字段?需要手动客户端IP分配才能删除SCTP数据包中的“IPv4地址参数”字段。因此,C++中需要以下代码:
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if(sock < 0)
{
//handle error
}
struct sockaddr_in clientAddr;
memset(&clientAddr,0, sizeof(struct sockaddr_in));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr("y.y.y.y");
clientAddr.sin_port = htons(a);
if( ::bind(sock, (struct sockaddr*)&clientAddr, sizeof(struct sockaddr)) < 0 )
{
//handle error
}
int-sock=socket(AF\u-INET、sock\u-STREAM、IPPROTO\u-SCTP);
if(sock<0)
{
//处理错误
}
clientAddr中的结构sockaddr_;
memset(&clientAddr,0,sizeof(struct sockaddr_in));
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(“y.y.y.y”);
clientAddr.sinu port=htons(a);
if(::bind(sock,(struct sockaddr*)和clientAddr,sizeof(struct sockaddr))<0
{
//处理错误
}
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if(sock < 0)
{
//handle error
}
struct sockaddr_in clientAddr;
memset(&clientAddr,0, sizeof(struct sockaddr_in));
clientAddr.sin_family = AF_INET;
clientAddr.sin_addr.s_addr = inet_addr("y.y.y.y");
clientAddr.sin_port = htons(a);
if( ::bind(sock, (struct sockaddr*)&clientAddr, sizeof(struct sockaddr)) < 0 )
{
//handle error
}