A ligação da interface de rede parece funcionar apenas como raiz

2

Eu tenho um servidor CentOS 7 com duas interfaces de rede. Um aponta para a nossa LAN (ens32) e o outro para a nossa DMZ (ens33).

Enquanto a interface LAN funciona bem, notei que parece que o tráfego só irá percorrer a interface DMZ se estiver logado como root, e não tenho certeza do que isso significa ou se tem algum efeito líquido em outros problemas que eu estou experimentando.

Por exemplo, se eu correr:

curl --interface ens32 ipecho.net/plain

como usuário não-root, recebo o IP público dessa interface.

Se eu correr:

curl --interface ens33 ipecho.net/plain

como usuário não-root, o comando parece travar e eu serei forçado a matar o processo.

Se eu executar o comando anterior como root, obtenho a saída esperada, que é o IP público dessa interface.

Alguém pode explicar o que pode estar acontecendo aqui?

    
por surkukteni 27.02.2018 / 17:34

1 resposta

2

Como pode ser visto na página oficial curl , para especificar / vincular a uma interface específica, é necessário ter CAP_NET_RAW ou executar como root .

Portanto, root é capaz de fazer a vinculação / roteamento e não funciona com um usuário comum para você.

Quando um usuário comum está usando curl , sem que seja permitido usar a opção --interface , as regras de roteamento padrão do servidor serão aplicadas a essa operação.

Na página oficial do curl curl.1 the man page :

--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 https://www.example.com/

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: https://www.kernel.org/doc/Documentation/networking/vrf.txt

    
por 27.02.2018 / 18:37