У меня простая конфигурация, содержащая две виртуальные машины CentOS. Первый (VM1) имеет доступ в ИНТЕРНЕТ через eth0 и внутреннюю сеть с VM2 на 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'
Я хочу иметь доступ к Интернету с ВМ2.
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
Я добавил несколько правил в IPTABLES, следуя некоторому руководству:
/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
Кроме того, в файле /etc/sysctl.conf
у меня есть net.ipv4.ip_forwarding = 1.
Что мне не хватает для того, чтобы получить эхо-запрос на www.google.com с ВМ2?
Вы маскируете неправильный интерфейс. Должно быть так.
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE