Redirecionar tráfego de um endereço IP

2

A tem um servidor raiz com 2 endereços IP estáticos, ambos conectados a uma interface (eth0 e eth0: 1). Agora eu preciso redirecionar todo o tráfego de entrada de um endereço IP para uma VM no mesmo PC. A VM tem seu próprio endereço IP local dentro de um comutador virtual. (É acessível a partir do "computador raiz"). Eu já falei com o provedor e ele admite que isso é possível com o NAT, mas, no entanto, não é permitido me dar instruções mais detalhadas. O que eu já tentei:

iptables -t nat -A PREROUTING -p tcp -d 85.214.XXX.XXX -j DNAT --to-destination 192.168.122.58

iptables -t nat -A PREROUTING -i eth0:1 -j DNAT --to-destination 192.168.122.58

Ambos não funcionam. A VM é auto tem acesso à Internet através de um endereço IP. (Pings da VM são bem sucedidos). O problema é que o tráfego de entrada (por exemplo, 85.214.XXX.XXX:80) ainda é tratado pelo "computador raiz", portanto, ele precisa ser redirecionado para a VM. Solicitações sobre o outro endereço IP (85.12.XXX.XXX:80) não devem ser redirecionadas. A porta 80 era apenas uma porta de exemplo. Existem mais portas que o http precisava.

EDIT1: Depois de usar o primeiro comando, o tráfego não é tratado pelo "servidor raiz", mas também não alcança a VM.

EDIT2:
ip -br link: lo UNKNOWN 00:00:00:00:00:00 eth0 UP ac:1f:6b:21:ea:14 eth1 DOWN ac:1f:6b:21:ea:15 virbr0 UP 52:54:00:07:80:05 virbr0-nic DOWN 52:54:00:07:80:05 vnet0 UNKNOWN fe:00:a3:b0:56:10

Endereço ip -br: lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 81.169.XXX.XXX/32 85.214.XXX.XXX/32 fe80::ae1f:6bff:fe21:XXXX/64 eth1 DOWN virbr0 UP 192.168.122.1/24 virbr0-nic DOWN vnet0 UNKNOWN fe80::fc00:a3ff:feb0:5610/64

rota Ip: default via 81.169.192.1 dev eth0 81.169.192.1 dev eth0 scope link 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

Ip-adress -c: iptables-save -c # Generated by iptables-save v1.6.0 on Tue Jun 26 21:12:21 2018 *nat :PREROUTING ACCEPT [77:5491] :INPUT ACCEPT [57:4459] :OUTPUT ACCEPT [26:1644] :POSTROUTING ACCEPT [26:1644] [36:1868] -A PREROUTING -d 85.214.XXX.XXX/32 -p tcp -j DNAT --to-destination 192.168.122.58 [326:23798] -A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN [0:0] -A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN [70:4104] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535 [2384:181184] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535 [1:84] -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE [4:240] -A POSTROUTING -d 192.168.122.58/32 -j SNAT --to-source 85.214.XXX.XXX COMMIT # Completed on Tue Jun 26 21:12:21 2018 # Generated by iptables-save v1.6.0 on Tue Jun 26 21:12:21 2018 *mangle :PREROUTING ACCEPT [8612376:1647699647] :INPUT ACCEPT [7968616:1098054721] :FORWARD ACCEPT [642923:549577951] :OUTPUT ACCEPT [7286018:1062313751] :POSTROUTING ACCEPT [7752855:1602990616] [363:121944] -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill COMMIT # Completed on Tue Jun 26 21:12:21 2018 # Generated by iptables-save v1.6.0 on Tue Jun 26 21:12:21 2018 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] :f2b-plesk-modsecurity - [0:0] [82390:7025055] -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT [18:720] -A INPUT -p tcp -m tcp --dport 106 -j DROP [2488:104592] -A INPUT -p tcp -m tcp --dport 3306 -j DROP [153:6168] -A INPUT -p tcp -m tcp --dport 5432 -j DROP [9:360] -A INPUT -p tcp -m tcp --dport 9008 -j DROP [41:1784] -A INPUT -p tcp -m tcp --dport 9080 -j DROP [252:20165] -A INPUT -p udp -m udp --dport 137 -j DROP [10772:2676517] -A INPUT -p udp -m udp --dport 138 -j DROP [488:21600] -A INPUT -p tcp -m tcp --dport 139 -j DROP [849142:43736264] -A INPUT -p tcp -m tcp --dport 445 -j DROP [68:2856] -A INPUT -p udp -m udp --dport 1194 -j DROP [39259:2663130] -A INPUT -p udp -m udp --dport 53 -j DROP [15817:947524] -A INPUT -p tcp -m tcp --dport 53 -j DROP [974:36333] -A INPUT -p icmp -m icmp --icmp-type 8/0 -j ACCEPT [5763490:719804706] -A INPUT -j ACCEPT [327455:532369669] -A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT [145660:7917349] -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT [0:0] -A FORWARD -i virbr0 -o virbr0 -j ACCEPT [29309:1533140] -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable [0:0] -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable [0:0] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT [249:11394] -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j REJECT --reject-with tcp-reset [3875:171296] -A FORWARD -m state --state INVALID -j DROP [0:0] -A FORWARD -i lo -o lo -j ACCEPT [582365:31456904] -A FORWARD -j DROP [363:121944] -A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT [12150865:2418557344] -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT [24:5299] -A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j REJECT --reject-with tcp-reset [12746:706295] -A OUTPUT -m state --state INVALID -j DROP [494443:29667994] -A OUTPUT -o lo -j ACCEPT [408707:30248531] -A OUTPUT -j ACCEPT [68:6175] -A f2b-plesk-modsecurity -j RETURN COMMIT # Completed on Tue Jun 26 21:12:21 2018

E na VM:

rota ip: default via 192.168.122.1 dev ens3 169.254.0.0/16 dev ens3 scope link metric 1000 192.168.122.0/24 dev ens3 proto kernel scope link src 192.168.122.58

    
por MarvinX 21.06.2018 / 00:17

1 resposta

1

Suas regras FORWARD permitem tráfego iniciado pela VM, saída e resposta, com estas regras:

-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT #reply traffic to the VM
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT #VM initiated

O que eles não permitem é o tráfego de entrada, pois as dicas de alto valor do contador estão na próxima regra FORWARD :

[29309:1533140] -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable

Isso é bom para a segurança, mas você terá que adicionar exceções.

UPDATE : redireciona todo o tráfego, não apenas algumas portas.

O redirecionamento em si:

iptables -t nat -I PREROUTING -d 85.214.XXX.XXX -j DNAT --to-destination 192.168.122.58

Isto irá redirecionar todos os protocolos (icmp, tcp, udp (possivelmente outros)), você pode adicionar como você escreveu inicialmente -p tcp para limitá-lo a tcp.

Você precisa ativar o tráfego redirecionado na cadeia FORWARD , pois quando o tráfego for DNAT ed, ele será encaminhado, portanto, estará sujeito à corrente FORWARD (e não mais à INPUT chain ). Ao mesmo tempo, para proteger contra qualquer uso incorreto de roteamento local (pelo gateway padrão, por exemplo), você pode limitar isso somente ao tráfego DNAT ed, consultando conntrack (marcar pacotes na tabela mangle e verificá-los aqui teria funcionado também):

iptables -I FORWARD -d 192.168.122.58 -m conntrack --ctstate DNAT -j ACCEPT

Observe o -I . Como você está competindo com as regras do provedor da VM (provavelmente o virt-manager), é necessário tomar cuidado para que suas regras de exceção sejam anteriores às regras DROP / REJECT . O ideal seria vir depois da regra ... RELATED,ESTABLISHED ... , mas você pode lidar com isso mais tarde.

Observe também que, pelo mesmo motivo (regra chegando tarde demais), o tráfego de saída da VM não está usando seu IP dedicado, mas o IP do host: a regra SNAT chega tarde demais, depois da regra genérica MASQUERADE . Você precisa inseri-lo com -I e não -A até descobrir como integrar isso com (provavelmente?) Virt-manager.
E, também, há um erro nesta regra, deve estar usando -s não -d como em:

iptables -t nat -I POSTROUTING -s 192.168.122.58/32 ! -d 192.168.122.0/24 -j SNAT --to-source 85.214.XXX.XXX

Sempre que (virtualmente?) o virt-manager reinsere sua regra (reiniciar etc.), você deve dar uma olhada novamente em suas regras para ver se tudo ainda está em uma ordem que permite o que você pretende.

Isso estaria fora do escopo deste Q / A para abordar a integração do virt-manager. Dê uma olhada lá por exemplo:

Rede - Libvirt Wiki - Encaminhando as conexões de entrada

    
por 26.06.2018 / 22:36