在同一网络接口(UDP)上回复

时间:2018-01-31 11:30:20

标签: linux networking tcp udp raspbian

是否可以在同一网络接口上回复所有传入的数据包/请求?

这是我的设置:我有一个带有两个网络接口(eth0和eth1)的无头Raspberry Pi(raspbian)。第一个接口(eth0)使用公共IP地址,这是静态的。此接口旨在通过Internet提供对Pi(时间和Web服务器,SSH)的访问。第二个接口(eth1)使用Raspberry Pi进行一般的Internet连接(执行更新,同步自己的时间或其他)并通过DHCP使用动态IP。不可能在eth0上进行一般的Internet连接,因此我必须在Pi上使用eth1。

我的问题是互联网(在Pi上)和互联网访问Pi无法正常工作。

首次配置(/etc/dhcpcd.conf):

interface eth0
static ip_address=141.41.241.68/28
static routers=141.41.241.65 192.168.0.1

重新启动后'ifconfig'显示正确的IP设置:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 141.41.241.68  netmask 255.255.255.240  broadcast 141.41.241.79
        ...

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.101  netmask 255.255.255.0  broadcast 192.168.0.255
        ...

结果:

  • Raspberry Pi上的互联网(eth1):不起作用
  • 通过Internet访问Raspberry Pi(通过eth0):
    • SSH(TCP):正常工作
    • Apache Web服务器(TCP):正常工作
    • NTP时间服务器(UDP):正常工作

现在我尝试更改接口的度量,希望优先级的更改成功

第二个配置(/etc/dhcpcd.conf):

interface eth1
metric 200

interface eth0
static ip_address=141.41.241.68/28
static routers=141.41.241.65 192.168.0.1
metric 201

结果:

  • Raspberry Pi上的互联网(eth1):正常工作
  • 通过Internet访问Raspberry Pi(通过eth0):
    • SSH(TCP):不起作用
    • Apache Web服务器(TCP):不起作用
    • NTP时间服务器(UDP):不起作用

确定。我认为所有流量都默认输出到eth1。使用'iptraf-ng'工具,我能够看到问题:

TCP Connections (Source Host:Port)  Iface
--------------------------------------------------
80.187.108.126:53024                eth0 
141.41.241.68:80                    eth0 
141.41.241.68:80                    eth1 
80.187.108.126:53024                eth1 
80.187.108.126:53025                eth0 
141.41.241.68:80                    eth0 
141.41.241.68:80                    eth1 
80.187.108.126:53025                eth1 

UDP Connections
--------------------------------------------------
UDP (76 bytes) from 80.187.108.126:28599 to 141.41.241.68:123 on eth0
UDP (76 bytes) from 192.168.0.101:123 to 80.187.108.126:28599 on eth1

我们看到:

在TCP上:一些连接到错误的接口(eth1)。

在UDP上:来自80.187.108.126的请求来自eth0,响应通过eth1发送。

接下来,我定义了路由表来回复同一网络接口上的传入数据包......

echo 100 public >> /etc/iproute2/rt_tables
ip rule add from 141.41.241.68/32 table public
ip route add default via 141.41.241.65 dev eth0 table public

结果:

  • Raspberry Pi上的互联网(eth1):正常工作
  • 通过Internet访问Raspberry Pi(通过eth0):
    • SSH(TCP):正常工作
    • Apache Web服务器(TCP):正常工作
    • NTP时间服务器(UDP):不起作用

和'iptraf-ng'显示:

TCP Connections (Source Host:Port)  Iface
--------------------------------------------------
141.41.241.68:80                    eth0
80.187.108.126:52083                eth0
141.41.241.68:80                    eth0
80.187.108.126:52084                eth0
141.41.241.68:80                    eth0
80.187.108.126:52085                eth0
141.41.241.68:80                    eth0
80.187.108.126:52086                eth0
141.41.241.68:80                    eth0
80.187.108.126:52087                eth0

UDP Connections
--------------------------------------------------
UDP (76 bytes) from 80.187.108.126:28599 to 141.41.241.68:123 on eth0
UDP (76 bytes) from 192.168.0.101:123 to 80.187.108.126:28599 on eth1

我们看到:

在TCP上:现在它可以正常工作

关于UDP:同样的问题:(

如何通过正确的接口(eth0)发送UDP响应?我不知道为什么TCP工作正常但UDP失败:( 它非常令人沮丧,我没有更多的想法。 我希望有人可以提供帮助。

最好的问候, SBond

0 个答案:

没有答案