Вот моя текущая настройка (все серверы - Ubuntu Server Edition 12.04):
Сервер 0 имеет два устройства, eth0 и eth1. eth0 подключен к стене (Интернету), а eth1 подключен к коммутатору. eth1 имеет следующую запись в / etc / network / interfaces:
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Серверы 1–4 имеют по одному устройству eth0. Все они подключены к коммутатору, и все они получают информацию о DHCP с сервера 0. eth0 имеет следующую запись интерфейсов (это потому, что серверы 1-4 являются бездисковыми узлами, которые запрашивают у сервера 0 все необходимое для загрузки):
iface eth0 inet manual
В этой конфигурации Сервер 0 является единственным сервером, имеющим доступ в Интернет. Как мне перенаправить любой веб-запрос (например, apt-get
или HTTP) от серверов 1-4 до сервера 0, чтобы предоставить серверам 1-4 доступ в Интернет? Это похоже на проблему, с которой сталкивались много раз, но я не могу понять, как правильно настроить сеть.
Выход route -n
является:
Destination Gateway Genmask Flags ... Iface
0.0.0.0 123.45.132.254 0.0.0.0 UG ... eth0
123.45.132.0 0.0.0.0 255.255.255.0 U ... eth0
192.168.1.0 0.0.0.0 255.255.255.0 U ... eth1
Вам нужно поставить две вещи: активация пересылки (в /etc/sysctl.conf net.ipv4.ip_forward=1
) и активируйте NAT с помощью iptables (/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
). NAT переводит частную сеть на внешний IP-адрес, поэтому внутренние машины могут выходить в Интернет. Эта строка должна применяться вашим брандмауэром. Я не знаю, какой у вас брандмауэр, поэтому вы должны интегрировать его в свою конфигурацию.