Eu tenho um servidor principal (Centos 6.2) que serve como roteador / firewall e possui máquinas virtuais.
As máquinas virtuais estão na rede 10.0.0.0/8 e todos os outros (existe o servidor DHCP) estão em 192.168.0.0/16.
Eu tenho duas interfaces voltadas para a internet, ppp0 com um IP variável e ppp1 com um IP estático. O que eu preciso fazer é fazer todo o tráfego de saída de 10.0.0.0/8 passar por ppp1 para que as máquinas virtuais sejam vistas como o IP estático. Máquinas em 192.168.0.0/16 devem poder se comunicar diretamente com máquinas em 10.0.0.0/8.
... basicamente, faça todo o tráfego que for para a internet, passe pelo ppp1 se for originado a partir de 10.0.0.0/8. Mantendo a capacidade de as diferentes redes se comunicarem entre si.
Eu tentei vários exemplos de roteamento baseado em origem sem sorte, acabo sem acesso do servidor principal para as máquinas virtuais. Nada com o iptables parece funcionar também.
Meu esquema inteiro se parece com:
Server:
ppp0: facing internet variable ip
ppp1: facing internet static ip
vnet0: bridge with ips: 192.168.0.1, 10.0.0.1
eth1: facing the local network
vnet1: interface to the first virtual server
vnet2: interface to the second virtual server
Virtual server 1:
eth0: interface connected to main server, with ip: 10.0.0.10.
Virtual server 2:
eth0: interface connected to main server, with ip: 10.0.0.11.
Local Machine *: (All the computers of people working in the office)
eth*: interface connected to main server, with ip: 192.168.0.*.
A saída de ip route show
no servidor é:
10.9.100.1 dev ppp1 proto kernel scope link src 190.196.26.245
10.52.173.3 dev ppp0 proto kernel scope link src 190.21.97.109
192.168.0.0/24 dev vnet0 proto kernel scope link src 192.168.0.1
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth2 scope link metric 1004
169.254.0.0/16 dev vnet0 scope link metric 1005
10.0.0.0/8 dev vnet0 proto kernel scope link src 10.0.0.1
default dev ppp0 scope link
A saída de ip link show
é:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:21:5e:c2:af:20 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:14:78:7c:47:87 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether ac:f1:df:69:5c:70 brd ff:ff:ff:ff:ff:ff
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:14:78:7c:47:87 brd ff:ff:ff:ff:ff:ff
7: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
8: ppp1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
9: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:54:00:54:f8:48 brd ff:ff:ff:ff:ff:ff
10: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fe:54:00:d0:14:24 brd ff:ff:ff:ff:ff:ff