Roteamento baseado em porta Linux usando iptables / ip route

4

Eu tenho a seguinte configuração:

192.168.0.4        192.168.0.6      192.168.0.1
+-----------+      +---------+      +----------+
|WORKSTATION|------|  LINUX  |------| GATEWAY  |
+-----------+      +---------+      +----------+
                   192.168.150.10
                        |
                   192.168.150.9
                   +---------+
                   |   VPN   |
                   +---------+
                   192.168.150.1

WORKSTATION tem uma rota padrão de 192.168.0.6 O LINUX tem uma rota padrão de 192.168.0.1

Estou tentando usar o gateway como a rota padrão, mas direciono o tráfego da porta 80 via VPN. Com base no que li no link , tentei fazer isso:

echo "1 VPN" >> /etc/iproute2/rt_tables
sysctl net.ipv4.conf.eth0.rp_filter = 0
sysctl net.ipv4.conf.tun0.rp_filter = 0
sysctl net.ipv4.conf.all.rp_filter = 0

iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 80 -j MARK --set-mark 0x1
ip route add default via 192.168.150.9 dev tun0 table VPN
ip rule add from all fwmark 0x1 table VPN

Quando eu executo o "tcpdump -i eth0 port 80" no LINUX e abro uma página da Web no WORKSTATION, não vejo o tráfego passar pelo LINUX. Quando eu executo um ping da WORKSTATION, recebo isso de alguns pacotes:

92 bytes from 192.168.0.6: Redirect Host(New addr: 192.168.0.1)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 de91   0 0000  3f  01 4ed3 192.168.0.4  139.134.2.18

É por isso que meu roteamento não está funcionando? Preciso colocar o GATEWAY e o LINUX em sub-redes diferentes para impedir que a WORKSTATION seja redirecionada para o GATEWAY? Preciso usar o NAT, ou posso fazer isso apenas com o roteamento (que é o que eu quero)?

    
por Pawz 21.05.2010 / 12:47

2 respostas

2

"LINUX" está dizendo "WORKSTATION" para usar "GATEWAY" em vez de si mesmo porque eles parecem estar na mesma sub-rede. Isso só funcionará se você configurar o bridging em "LINUX" (consulte o brctl (8)) e, se o fizer, "WORKSTATION" deverá usar "GATEWAY" em sua rota padrão.

Certifique-se de usar uma sub-rede por domínio de broadcast, pacotes de broadcast nunca são roteados, então você precisa de uma sub-rede diferente em todas as três interfaces de "LINUX" (você pode usar / 30s, mas eu recomendo continuar com / 24s). ou tê-los ponte. Você provavelmente também deve configurar uma sub-rede separada para a própria VPN.

Em seguida, adicione a sub-rede da VPN à tabela da VPN, por exemplo:

ip route add 192.168.150.0/24 dev tun0 scope link table VPN proto static

Para usar essa tabela, adicione uma regra de roteamento como esta:

ip rule add fwmark 1 lookup VPN priority 500

E veja se você pode rotear pacotes via "VPN" e "GATEWAY" antes de adicionar qualquer regra de fwmark, apenas no caso.

E não acho que desativar o filtro de caminho inverso seja benéfico.

    
por 21.05.2010 / 17:44
0

Eu vejo que essa pergunta é bem antiga, mas pensei em adicionar uma nota rápida caso isso ajude alguém com o mesmo problema. Embora seja provavelmente melhor separar os dispositivos em segmentos de rede diferentes, como Henk recomenda, se isso não for possível, há uma solução alternativa.

O redirecionamento que está acontecendo onde o Linux (192.168.0.6) informa a estação de trabalho (192.168.0.4) para usar o gateway (192.168.0.1) pode ser desabilitado fazendo a seguinte alteração no arquivo /etc/sysctl.conf o servidor Linux:

net.ipv4.conf.all.send_redirects = 1
    
por 25.01.2011 / 07:40