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!