Autor
|
Tema: Como redireccionar puertos entre una maquina virtual y el host principal? (Leído 8,598 veces)
|
WHK
|
Hola, actualmente tengo un centos 7 como host y una maquina virtual en kvm (virsh) también con centos 7, en la maquina virtual instalé un openvpn en modo tun por udp y quiero que sea accesible desde internet, por lo cual se me ocurrió que debo publicar el puerto udp:1194 usando el host principal. He intentado con iptables y he hecho esto: iptables -t nat -A PREROUTING -p udp --dport 1194 -j DNAT --to "192.168.122.2:1194" iptables -I FORWARD -d "192.168.122.2/32" -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT Hasta acá todo bien, hice correr el openvpn, el puerto se abre sin problemas, he testeado desde el host principal con: $ nc -v -u 192.168.122.2 1194 Y abre correctamente, ahora he probado el ruteo: $ nc -v -u 127.0.0.1 1194 y también conecta correctamente, el problema viene ahora, que quiero conectarme desde el exterior y no puedo, desde mi pc ejecuto: $ nc -v -u sitio.com 1194 Y no me conecta, por lo cual supuse que iptables me estaba restringiendo y he habilitado la apertura del puerto: $ iptables -A INPUT -i eth0 -p udp --destination-port 1194 -j ACCEPT Pero aun sigo sin poder acceder y no se que pueda estar sucediendo ¿Qué hice mal?
|
|
|
En línea
|
|
|
|
MinusFour
|
¿Lo estäs probando desde tu misma red? Si lo estás probando desde tu misma red, usa algun servicio para revisar si el puerto está abierto. http://www.canyouseeme.org/
|
|
|
En línea
|
|
|
|
WHK
|
No, el servidor host es un servidor dedicado en usa, yo estoy en chile xD
|
|
|
En línea
|
|
|
|
MinusFour
|
No, el servidor host es un servidor dedicado en usa, yo estoy en chile xD
¿Y estás probando hacer la conexión desde fuera del servidor verdad? ¿No desde una session SSH en tu servidor o algo así? ¿Estás seguro que la interfaz es eth0? Si vas a usar IP forwarding vas a necesitar activarlo también (no se si en centos sea igual). sudo sysctl -w net.ipv4.ip_forward=1
o echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
|
En línea
|
|
|
|
WHK
|
Asi es: [root@machine ~]# cat /etc/sysctl.conf # System default settings live in /usr/lib/sysctl.d/00-system.conf. # To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file # # For more information, see sysctl.conf(5) and sysctl.d(5).
# Disable IPv6 autoconf net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.eth0.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.eth0.accept_ra = 0 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv4.ip_forward = 1 [root@machine ~]# cat /proc/sys/net/ipv4/ip_forward 1 He intentado conectarme desde el exterior y nada.
|
|
« Última modificación: 11 Diciembre 2016, 02:55 am por WHK »
|
En línea
|
|
|
|
MinusFour
|
Pon la lista completa de iptables: sudo iptables -L
Y la lista de interfaces: ip a
|
|
|
En línea
|
|
|
|
WHK
|
En el host principal: [code][root@machine ~]# iptables -vnL Chain INPUT (policy ACCEPT 156K packets, 398M bytes) pkts bytes target prot opt in out source destination 4491 280K ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 128 41984 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 92369 8828K ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED 1779K 219M ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW,ESTABLISHED 56949 5700K ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED 0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 state NEW,ESTABLISHED 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1194 state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 165K 1434M ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED 113K 6269K ACCEPT all -- virbr0 * 192.168.123.0/24 0.0.0.0/0 24 7872 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0 2525 106K REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 124 5143 ACCEPT udp -- * * 0.0.0.0/0 192.168.122.2 state NEW udp dpt:1194
Chain OUTPUT (policy ACCEPT 476K packets, 465M bytes) pkts bytes target prot opt in out source destination 128 42874 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
[root@machine ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 200.200.200.200/24 brd 200.200.200.255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 9: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 15: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 16: vnet3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 18: vnet4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN qlen 500 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
[/code] He ocultado la ip pública real por 200.200.200.200 y la dirección mac de todas las interfaces por xx:xx:xx:xx:xx:xx.
|
|
|
En línea
|
|
|
|
MinusFour
|
2525 106K REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 124 5143 ACCEPT udp -- * * 0.0.0.0/0 192.168.122.2 state NEW udp dpt:1194 ¿Será el orden aquí? Dice ahi que rechaza todos los paquetes a la interfaz virbr0 (que me imagino es la interfaz virtual con la que te comunicas con el guest) y no esta pasando a la siguiente regla. Tambien necesitas hacer MASQUERADE porque los paquetes que van saliendo de la interfaz virbr0 salen con la ip privada. Si no lo haces, los paquetes que lleguen a tu equipo van a llegar con el SRC de la ip privada. sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
« Última modificación: 11 Diciembre 2016, 05:23 am por MinusFour »
|
En línea
|
|
|
|
WHK
|
He eliminado todas las reglas de foward y le he añadido la regla de redirección: [root@machine ~]# iptables -vnL Chain INPUT (policy ACCEPT 103 packets, 72552 bytes) pkts bytes target prot opt in out source destination 7325 455K ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 284 93152 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 109K 11M ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED 2335K 291M ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW,ESTABLISHED 79028 7864K ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED 0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 state NEW,ESTABLISHED 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1194 state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT 2 packets, 140 bytes) pkts bytes target prot opt in out source destination 2 84 ACCEPT udp -- * * 0.0.0.0/0 192.168.122.2 state NEW udp dpt:1194
Chain OUTPUT (policy ACCEPT 234 packets, 103K bytes) pkts bytes target prot opt in out source destination 284 95163 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
He agregado: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -p "${PROTO}" --dport "${HOST_PORT}" -j DNAT --to "${GUEST_IPADDR}:${GUEST_PORT}" iptables -I FORWARD -d "${GUEST_IPADDR}/32" -p "${PROTO}" -m state --state NEW -m "${PROTO}" --dport "${GUEST_PORT}" -j ACCEPT iptables -A INPUT -i eth0 -p "${PROTO}" --destination-port 1194 -j ACCEPT Pero nada :-/ , si me conecto desde el host principal (el dedicado) a localhost me conecta bien, quiere decir que la redirección está bien hecha pero solo funciona dentro del servidor como si la redirección hubiese sido hecha a localhost porque desde el exterior no puedo acceder. Por otro lado si puedo acceder a otros puertos del servidor sin problemas.
|
|
|
En línea
|
|
|
|
WHK
|
Mi tabla NAT [root@machine ~]# iptables -t nat -vnL Chain PREROUTING (policy ACCEPT 2 packets, 104 bytes) num pkts bytes target prot opt in out source destination 1 20 827 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 to:192.168.122.2:1194
Chain INPUT (policy ACCEPT 2 packets, 104 bytes) num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3 packets, 204 bytes) num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2 packets, 132 bytes) num pkts bytes target prot opt in out source destination 1 0 0 RETURN all -- * * 192.168.122.0/24 224.0.0.0/24 2 0 0 RETURN all -- * * 192.168.122.0/24 255.255.255.255 3 30 1800 MASQUERADE tcp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535 4 22 1672 MASQUERADE udp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535 5 0 0 MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24 6 1066 242K MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
He reemplazado la ip original de la maquina virtual y del rango de ip por 192.168.1.122 ya que mi rango es distinto, pero no influye en el problema ya que no entra en conflicto con ningún otro rango.
|
|
« Última modificación: 11 Diciembre 2016, 17:32 pm por WHK »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Instalar wifiway 2 como máquina virtual
Wireless en Linux
|
oleviatan
|
1
|
6,590
|
28 Enero 2011, 10:31 am
por ChimoC
|
|
|
Usar RAT en ubuntu, maquina virtual (VB) de windows XP (problema abrir puertos)
Análisis y Diseño de Malware
|
MCR_BKN
|
2
|
3,383
|
25 Mayo 2012, 01:38 am
por jackgris
|
|
|
Alias en host virtual en Xampp de proyecto en Laravel 5.6
Programación General
|
Darkus62
|
0
|
2,012
|
12 Octubre 2018, 17:15 pm
por Darkus62
|
|
|
Los puertos de una máquina virtual ¿son también virtuales?
Redes
|
Kyrie Eleison
|
3
|
3,731
|
5 Junio 2020, 15:26 pm
por MinusFour
|
|
|
Kali linux maquina principal
GNU/Linux
|
kaiser217321
|
2
|
4,901
|
11 Junio 2023, 03:08 am
por BloodSharp
|
|