Я очень новичок в маршрутизации Linux. Хотя я понимаю это концептуально, фактические команды маршрута ускользают от меня. Я пробовал ip route и ip rule самостоятельно, но они не работали. Поэтому разместите здесь вопрос.
Вот моя текущая установка. Сервер Centos с двумя сетевыми картами
eth0 (external and open to the internet)
- static IP: 192.168.13.10
- GW: 192.168.13.1
eth1 (internal private)
- static IP: 192.168.15.10
- GW: Not defined yet. (as I would imagine 192.168.13.1 to be catch all)
Клиент Centos с одной сетевой картой
eth0
- Static IP: 192.168.15.200
- GW: 192.168.15.10
Во-первых, я бы хотел, чтобы клиент Centos мог подключаться к Интернету только через сервер Centos. Я знаю, что мне не хватает какой-то записи в таблице маршрутизации для работы выше. Может ли кто-нибудь указать мне на это?
Во-вторых, я хотел бы, чтобы клиент Centos получил IP-адрес с сервера Centos. У меня на сервере Centos установлен dhcpd. Итак, достаточно просто изменить booproto в сценарии ifcfg-eth0 (со статического на dhcp), или требуются ли какие-либо изменения маршрутизации на клиенте centos?
Ваша настройка в том виде, в котором она существует, правильная, но неполная. Вам необходимо включить пересылку пакетов на сервере CentOS и, при желании, какой-то брандмауэр для блокировки нежелательного трафика. Ваши клиенты уже пытаются пройти через сервер, чтобы попасть в Интернет, они просто не могут этого сделать, пока вы не включите как минимум пересылку пакетов.
DHCP - это отдельная проблема, но, опять же, для клиентов не требуется изменять маршрутизацию - если DHCP-сервер предоставляет клиенту ту же IP-информацию, что и сейчас, он будет работать так, как вы ожидаете.
Джон прав, но некоторые по желанию Правила брандмауэра не являются необязательными, но обязательными. Для маршрутизации трафика в Интернет вам потребуется переадресация IP, как объяснил Джон, но вам также понадобится маскировка IP (NAT).
Отредактируйте /etc/sysctl.conf и добавьте
net.ipv4.conf.default.forwarding=1
Перезапустите сетевую службу,
service network restart
Теперь вам понадобится правило iptables "NAT":
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Я не слишком знаком с CentOS, но, возможно, вам нужно перезапустить службу iptables или проблему iptables save
(или оба).