3 votos

Especifica una interfaz de red con el enrollamiento

Por algunas razones, quiero el código de un servidor proxy que la ruta de sus solicitudes a través de su interfaz wifi en lugar de ethernet (que es la ruta predeterminada en el nivel de sistema operativo). Sé que yo podría hacer que por juguetear con os rutas, pero yo prefiero hacerlo directamente en curl, por ejemplo.

He leído que en realidad se puede elegir la interfaz de red de un socket se utiliza con la opción --opción de interfaz, pero no parece funcionar para mí :(

He intentado lo siguiente:

curl --interface wlp2s0 google.com

Pero solo me dan ETIMEDOUT errores.. Por otro lado, si hago

curl --interface enp0s20 google.com

funciona como se esperaba..

¿Alguien tiene una idea de lo que está pasando ?

3voto

MariusMatutiae Puntos 20077

Como señaló correctamente por Matt Clark, ETIMEDOUT significa que usted no podría alcanzar el sitio especificado, por cualquier motivo.

Pero permítanme señalar que malinterpretan el significado de la --interfaz de opción. Lo que significa es: si tengo dos o más interfaces, utilice la dirección IP de la interfaz que me especificar, en lugar de la predeterminada". Pero como para el enrutamiento, es decir, decidir que la interfaz de la solicitud se dirige a través, es el kernel el que decide, no la de su mando, de acuerdo a la tabla de enrutamiento tiene: si la tabla de enrutamiento especifica una puerta de enlace predeterminada sobre eth0, por ejemplo, el curl de solicitud se enrutan a través de él a pesar de que usted ha especificado --interfaz wlan0.

Echemos un vistazo a esto: he creado dos tcpdump sesiones, una en mi dispositivo ethernet (usb0), uno en el dispositivo wifi (wlan0); ambos están conectados, pero la tabla de enrutamiento tiene la puerta de enlace a través usb0. Ahora, en un tercer shell, puedo enviar dos curl de las solicitudes, de la siguiente manera:

$ date && curl --interface usb0 146.255.36.1/plain
mar 22 nov 2016, 18.44.21, CET
<!-- pageok -->
<!-- managed by puppet -->
<html>
<pre>pageok</pre>
</html>
$ date && curl --interface wlan0 146.255.36.1/plain
mar 22 nov 2016, 18.44.44, CET
<!-- pageok -->
<!-- managed by puppet -->
<html>
<pre>pageok</pre>
</html>

y esto es lo que mis dos tcpdump sesiones de registro: el de wifi

# tcpdump -i wlan0 -n host 146.255.36.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes

y el de ethernet

# tcpdump -i usb0 -n host 146.255.36.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on usb0, link-type EN10MB (Ethernet), capture size 262144 bytes
18:44:21.118505 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [S], seq 2178801514, win 29200, options [mss 1460,sackOK,TS val 10527374 ecr 0,nop,wscale 7], length 0
18:44:21.147291 IP 146.255.36.1.80 > 192.168.73.74.52601: Flags [S.], seq 95036242, ack 2178801515, win 14480, options [mss 1460,nop,nop,TS val 500605800 ecr 10527374,nop,wscale 8], length 0
18:44:21.147322 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 10527381 ecr 500605800], length 0
18:44:21.147375 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [P.], seq 1:82, ack 1, win 229, options [nop,nop,TS val 10527381 ecr 500605800], length 81: HTTP: GET /plain HTTP/1.1
18:44:21.175829 IP 146.255.36.1.80 > 192.168.73.74.52601: Flags [.], ack 82, win 57, options [nop,nop,TS val 500605829 ecr 10527381], length 0
18:44:21.178222 IP 146.255.36.1.80 > 192.168.73.74.52601: Flags [P.], seq 1:285, ack 82, win 57, options [nop,nop,TS val 500605832 ecr 10527381], length 284: HTTP: HTTP/1.1 200 OK
18:44:21.178236 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [.], ack 285, win 237, options [nop,nop,TS val 10527389 ecr 500605832], length 0
18:44:21.178321 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [F.], seq 82, ack 285, win 237, options [nop,nop,TS val 10527389 ecr 500605832], length 0
18:44:21.206618 IP 146.255.36.1.80 > 192.168.73.74.52601: Flags [F.], seq 285, ack 83, win 57, options [nop,nop,TS val 500605860 ecr 10527389], length 0
18:44:21.206642 IP 192.168.73.74.52601 > 146.255.36.1.80: Flags [.], ack 286, win 237, options [nop,nop,TS val 10527396 ecr 500605860], length 0
18:44:44.284057 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [S], seq 2817430695, win 29200, options [mss 1460,sackOK,TS val 10533165 ecr 0,nop,wscale 7], length 0
18:44:44.313090 IP 146.255.36.1.80 > 192.168.73.45.41804: Flags [S.], seq 3652186052, ack 2817430696, win 14480, options [mss 1460,nop,nop,TS val 500628966 ecr 10533165,nop,wscale 8], length 0
18:44:44.313117 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 10533172 ecr 500628966], length 0
18:44:44.313152 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [P.], seq 1:82, ack 1, win 229, options [nop,nop,TS val 10533172 ecr 500628966], length 81: HTTP: GET /plain HTTP/1.1
18:44:44.342243 IP 146.255.36.1.80 > 192.168.73.45.41804: Flags [.], ack 82, win 57, options [nop,nop,TS val 500628995 ecr 10533172], length 0
18:44:44.343076 IP 146.255.36.1.80 > 192.168.73.45.41804: Flags [P.], seq 1:285, ack 82, win 57, options [nop,nop,TS val 500628996 ecr 10533172], length 284: HTTP: HTTP/1.1 200 OK
18:44:44.343090 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [.], ack 285, win 237, options [nop,nop,TS val 10533180 ecr 500628996], length 0
18:44:44.343168 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [F.], seq 82, ack 285, win 237, options [nop,nop,TS val 10533180 ecr 500628996], length 0
18:44:44.372262 IP 146.255.36.1.80 > 192.168.73.45.41804: Flags [F.], seq 285, ack 83, win 57, options [nop,nop,TS val 500629025 ecr 10533180], length 0
18:44:44.372302 IP 192.168.73.45.41804 > 146.255.36.1.80: Flags [.], ack 286, win 237, options [nop,nop,TS val 10533187 ecr 500629025], length 0
^C
20 packets captured
20 packets received by filter
0 packets dropped by kernel

Aviso:

  1. Los sellos de tiempo, correspondiente a cada solicitud,

  2. las diferentes direcciones Ip de la LAN, 192.168.73.74 para ethernet y 192.168.73.45 por wifi.

  3. Que todos los paquetes son detectados por el tcpdump sesión en la interfaz ethernet, independientemente de la elección de mi --interfaz.

Usted puede pedir: así que cuando es el --interfaz de opción útil? Cuando usted tiene dos (o más) de las tablas de enrutamiento, una por cada interfaz, cada uno con su propia puerta de enlace. Entonces --interfaz le permite especificar la interfaz que se utiliza para llegar a curl's de destino. Si usted quiere saber más acerca de cómo configurar una política de enrutamiento, se puede leer aquí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: