Como fazer o IP de entrada e saída igual em um servidor de ligação múltipla de IP

1

Eu tenho uma ligação de interface de rede centos 6 VPS configurada 1 com 4 IPs, por exemplo, 172.xx11, 172.xx12, 172.xx13, 172.xx14 ligação com venet0: 0, venet0: 1, venet0 : 2, venet0: 3.

Eu tenho o serviço pptpd em execução no servidor. O cliente pode se conectar ao serviço VPN PPTP com cada um dos 4 IPs, mas quando o pacote é encaminhado para o destino, o IP sempre será o IP principal do servidor, ou seja, 172.x.x.11.

Por exemplo, um usuário solicita uma página de twitter.com conectando-se a 172.x.x.13 com o cliente PPTP VPN, mas o twitter.com vê a solicitação como 172.x.x.11. Como devo configurar o servidor (talvez iptables, route) para tornar o IP de entrada e saída igual?

Isto é o que eu defino iptables para ip forwading:
-A POSTROUTING -s 192.168.24.0/255.255.255.0 -o venet0 -j MASQUERADE

Este é o resultado do comando de rota:% [root@bla1 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
link-local * 255.255.0.0 U 1002 0 0 venet0
default * 0.0.0.0 U 0 0 0 venet0

    
por Alex Liao 14.06.2013 / 16:08

2 respostas

1

Use o iptables CONNMARK para marcar cada pacote à medida que ele sai e restaure a marca como o pacote retorna de uma conexão. Você também precisa configurar várias tabelas de roteamento, uma para cada marca, para poder rotear os pacotes com base na marcação.

Para configurar as rotas, você pode usar 'ip route nexthop'. Você também pode especificar o peso de cada rota para equilibrar o tráfego como desejar.

Além disso, acho que seu exemplo não é exato. O que está acontecendo é que os pacotes estão saindo de endereços IP diferentes, então quando eles voltarem, eles não serão destinados ao ip que é usado para estabelecer a conexão. É por isso que você precisa ter certeza de que todos os pacotes para uma conexão sempre usam a mesma rota.

Eu não tenho mais o script para fazer isso, mas o meu foi baseado no exemplo no link (copiado abaixo).

#by-pass rules if it is already MARKed
iptables -t mangle -A POSTROUTING -m mark  --mark ! 0 -j ACCEPT 
#1st packets(from a connection) will arrive here 
iptables -t mangle -A POSTROUTING -o eth1 -j MARK --set-mark 0x1
iptables -t mangle -A POSTROUTING -o eth2 -j MARK --set-mark 0x2
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

#restore mark before ROUTING decision
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark

#route commands
ip ro add default  nexthop via x.x.x.x dev eth1 weight 1 nexthop via
    y.y.y.y dev eth2
ip route add default table provider1 via x.x.x.x dev eth1
ip route add default table provider2 via y.y.y.y dev eth2

# and most important
ip rule add fwmark 0x1 table provider1
ip rule add fwmark 0x2 table provider2

Há outras coisas a considerar também:

  1. Alguns programas, como o ssh, criam uma nova conexão após a configuração inicial. Essa nova conexão pode ter uma rota diferente da conexão inicial e o aplicativo não verá pacotes dessa conexão. Então você configurou rotas especiais para aplicativos como este.
  2. Se você tiver muitos links, surgirá um problema com flakey nics. É melhor conectar a conexão física aos modems com o switch vlan.
  3. Você também precisa de rota especial se quiser permitir conexões de entrada de fora.
por 14.06.2013 / 17:18
0

O que você vê é uma conseqüência direta da regra de pós-venda que você configurou.

O que você deseja fazer requer ponte (para comunicação na mesma rede) ou roteamento (para comunicação dentro da rede). Masquerading (NATting) tem o efeito que você está lamentando.

    
por 14.06.2013 / 16:34