Duas NICs, uma com IP estático e um DHCP. Roteamento de política de IP

3

Eu tenho problemas para configurar um servidor que possuo. Ele tem Linux Ubuntu Server Edition 10.04 LTS como OS, dois NICs (eth0 e eth1) e usa o OpenVPN.

A eth0 está conectada a um switch que está conectado a um roteador 3G (ip estático: 192.168.0.254) e a eth1 é às vezes conectada a uma LAN desconhecida (antes das mãos) e usa o DHCP para adquirir um endereço IP. Apenas uma dessas interfaces terá acesso à Internet no horário, ou seja, se um cabo estiver conectado na porta eth1, será necessário que o roteador 3G seja desligado *.

Por fim, gostaria que todo o tráfego passasse pela VPN usando a interface que está conectada à Internet, mas também todo o tráfego para um endereço IP específico e uma porta (digamos 192.168.45.1:8443) para usar eth1, no importa o que.

No processo de configuração, eu primeiramente me concentrei na parte 3G, deixei a eth1 desconectada e consegui usar a VPN para se comunicar com outros servidores na VPN através da eth0.

/ etc / network / interfaces é assim:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.254

auto eth1
iface eth1 inet dhcp

Depois, liguei um cabo ethernet na eth1, desativei a VPN e desliguei o roteador 3G. A LAN à qual o eth1 está conectado possui um servidor DHCP (192.168.0.254) e, por acaso, tem o mesmo intervalo de ip que as máquinas conectadas ao eth0 (192.168.0.x). Não posso de modo algum garantir que ambas as sub-redes serão diferentes no futuro.

O servidor obtém um IP (192.168.0.45) do servidor DHCP, mas também não é possível executar ping nem ver o servidor na lista de dispositivos conectados na interface do servidor DHCP.

Depois de comentar a linha do gateway em / etc / network / interfaces, eu sou capaz de fazer ping no servidor DHCP, assim como qualquer outro servidor na LAN, mas ainda não o contrário. Além disso, só funciona se eu especificar a interface para usar o ping:

  • ping 192.168.0.254

    PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.
    From 192.168.0.100 icmp_seq=1 Destination Host Unreachable
    From 192.168.0.100 icmp_seq=3 Destination Host Unreachable
    From 192.168.0.100 icmp_seq=4 Destination Host Unreachable
    ^C
    --- 192.168.0.254 ping statistics ---
    6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5007ms, pipe 3
    
  • ping 192.168.0.254 -I eth1

    PING 192.168.0.254 (192.168.0.254) from 192.168.0.100 eth1: 56(84) bytes of data.
    64 bytes from 192.168.0.254: icmp_seq=1 ttl=255 time=0.738 ms
    64 bytes from 192.168.0.254: icmp_seq=2 ttl=255 time=0.832 ms
    64 bytes from 192.168.0.254: icmp_seq=3 ttl=255 time=0.809 ms
    64 bytes from 192.168.0.254: icmp_seq=4 ttl=255 time=0.795 ms
    
    --- 192.168.0.254 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2997ms
    rtt min/avg/max/mdev = 0.738/0.793/0.832/0.044 ms
    

Eu não tenho ideia de por que ele ainda diz from 192.168.0.100 mesmo quando faz ping na eth1, já que não é o endereço dele.

Eu li sobre o Roteamento de Política IP e parecia ser a maneira que eu deveria ir para alcançar o que eu queria no final (entre outros, forçando o tráfego para e de um ip / port específico através de eth1). Se bem entendi, o que poderia impossibilitar o ping do servidor de qualquer outra máquina na LAN é que ele retorna todo o tráfego através da eth0, caso seja a rota padrão?

No entanto, ao olhar para a saída de route , parece-me que a rota padrão está em eth1?

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
default         192.168.0.254   0.0.0.0         UG    100    0        0 eth1

Li postar e aquele linkado nele e tentar adaptá-lo para que todo o tráfego que entra na eth0 saia eth0 e o mesmo para eth1:

ip route add default dev eth0 table 3G
ip route add default dev eth1 table LAN
ip rule add fwmark 0x1 table 3G
ip rule add fwmark 0x2 table LAN
iptables -A OUTPUT -t mangle -o eth0 -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -o eth1 -j MARK --set-mark 2

Mas isso não funciona e depois disso, não consigo mais fazer ping no servidor DHCP. Eu acho que entendi mal como isso funciona ...

O que devo fazer?

Além disso, deixei de fora a parte da VPN por enquanto, mas estou um pouco preocupado que ela não funcione como eu esperava sinceramente. Como as rotas e a VPN interagem? Eu preciso ter certeza de que a rota que força todo o tráfego para e de um ip / route específico através da eth1, não pode ser resolvida se a eth1 não estiver conectada.

Muito obrigado antecipadamente pela sua ajuda. Eu ficaria muito feliz em fornecer qualquer outra informação, se necessário. Por favor, desculpe-me se a pergunta já foi respondida em outro lugar, eu não a encontrei (ou se é muito básica).

* seria ainda melhor, se eu pudesse configurar que todo o tráfego, exceto para e de um subconjunto de endereços IP, passaria pela eth1 se um cabo estivesse conectado.

Editar >

eth0 está agora na sub-rede 10.13.37.0/255.255.255.248 e o servidor tem 10.13.37.2 como ip.

Todo o tráfego passa agora pela VPN, mas eu gostaria que o tráfego para 192.168.45.1 (192.168.45.0/24 é a sub-rede OpenVPN) na porta 443, enquanto ainda estiver sendo transportado através da VPN, use apenas eth1 (tornando assim inacessível se não houver conectividade) e tráfego para 192.168.45.1 na porta 8443 use apenas eth0. Isso é possível?

ip route add default dev eth0 table 3G
ip route add default dev eth1 table LAN
ip rule add fwmark 0x1 table 3G
ip rule add fwmark 0x2 table LAN
iptables -A OUTPUT -t mangle -o eth0 --dst 192.168.45.1 --dport 8443 -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -o eth1 --dst 192.168.45.1 --dport 443 -j MARK --set-mark 2

mas usando iptraf, eu posso ver que quando wget-algo em 443 ou 8443, apenas eth1 é usado.

Obrigado!

    
por ixM 24.07.2012 / 17:20

1 resposta

1

Tem certeza de conectar o cabo correto? parece que você plugou o cabo do 192.168.0.x lan para eth1 não para eth0.

se não for, você tentou desconectar o cabo BOTH e tentar fazer o ping com apenas um cabo conectado? Como:

  • Desconecte os dois
  • Conecte o cabo 3G à eth0 e faça ping para 192.168.0.254
  • Desconecte-o novamente
  • Conecte o cabo LAN à eth1
  • run: ifconfig eth1 down
  • run: ifconfig eth1 up
  • run: ifconfig eth1 e procure o ip

BTW, MUDAR CONFIGURAÇÕES DE LAN! Se você não puder alterar a configuração da LAN da eth1, altere a eth0 com o roteador 3G, de 192.168.0.x para 192.168.1.x (para todos os computadores dessa lan) ou você terá SEMPRE PROBLEMAS com o mesmo ip lan.

    
por 24.07.2012 / 19:05