我有一个带有两个网络接口的CentOS 7服务器.一个指向我们的LAN(ens32),另一个指向我们的DMZ(ens33).
虽然LAN接口工作正常,但我注意到,如果以root用户身份登录,流量似乎只会遍历DMZ接口,我不确定这意味着什么,或者它是否对我遇到的其他问题有任何净影响.
例如,如果我运行:
curl --interface ens32 ipecho.net/plain
作为非root用户,我将获得该接口的公共IP.
如果我跑:
curl --interface ens33 ipecho.net/plain
作为非root用户,命令似乎停止,我将被迫杀死进程.
如果我以root身份运行上一个命令,我将得到预期的输出,即该接口的公共IP.
任何人都可以解释这里可能发生的事情吗?
解决方法:
正如在官方curl页面中可以看到的,要指定/绑定到特定接口,需要具有CAP_NET_RAW或以root身份运行.
因此root可以进行绑定/路由,并且它不适合普通用户.
当普通用户使用curl时,如果不允许使用–interface选项,则服务器的默认路由规则将适用于该操作.
–interface
Perform an operation using a specified interface. You can enter
interface name, IP address or host name. An example could look like:
curl –interface eth0:1 07001
If this option is used several times, the last one will be used.
On Linux it can be used to specify a VRF, but the binary needs to
either have CAP_NET_RAW or to be ran as root.
More information about
Linux VRF: 07002
标签:linux,networking
来源: https://codeday.me/bug/20190814/1654614.html