Você está mascarando a interface errada. Deve ser o seguinte.
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
Eu tenho uma configuração simples, contendo duas VMs do CentOS. Primeiro um (VM1) tem acesso à INTERNET através de eth0 e uma rede interna com VM2 em eth1.
ping from VM1 to www.google.com -> works
ping from VM1 to VM2(172.16.73.34) -> works
ping from VM2 to VM1(712.16.73.33) -> works
ping from VM2 to eth0 on VM1 (192.167.0.101) -> works
ping from VM2 to www.google.com -> 'UNKOWN HOST'
Eu quero poder acessar a Internet a partir da VM2.
VM1 configurations:
default gateway: 192.168.0.1
eth0:
inet addr: 192.168.0.101
mask: 255.255.255.0
eth1:
inet addr: 172.16.73.33
mask: 255.255.255.224
resolv.conf:
nameserver: 213.154.124.1
nameserver: 193.231.252.1
-
VM2 configurations:
default gateway: 172.16.73.33
eth1:
inet addr: 172.16.73.34
mask: 255.255.255.224
resolv.conf:
nameserver: 213.154.124.1
nameserver: 193.231.252.1
Eu adicionei algumas regras ao IPTABLES após alguns tutoriais:
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -F INPUT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F OUTPUT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -F FORWARD
/sbin/iptables -t nat -F
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
/sbin/service iptables restart
Além disso, no arquivo /etc/sysctl.conf
, tenho net.ipv4.ip_forwarding = 1.
O que estou perdendo para poder fazer o ping para www.google.com da VM2?
Você está mascarando a interface errada. Deve ser o seguinte.
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
Tags networking nat linux centos