Машина как шлюз между роутером и локальными устройствами

У меня есть машина, которую я хочу использовать в качестве шлюза между маршрутизатором.

Например:

  1. Несколько машин в сети хотят получить доступ www.google.com скажем
  2. Отправить свои запросы мне
  3. Я отправляю их на мой роутер
  4. Получать ответы от моего роутера
  5. Отправить их обратно клиентам

Как я могу сделать это в среде Unix (возможно, с использованием iptables)?

2 ответа

Решение

Вы захотите включить переадресацию IP, а затем либо настроить таблицы маршрутов, либо использовать таблицы IP для NAT. Вот информация о том, как настроить NAT'ing:

  • echo 1 > /proc/sys/net/ipv4/ip_forward

  • редактировать /etc/sysctl.conf и измените строку, которая говорит net.ipv4.ip_forward = 0 в net.ipv4.ip_forward = 1

  • /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Я полагаю, что вы можете просто отказаться от линии MASQUERADE, если вы хотите пересылку без NAT.

Помимо вашего конкретного примера HTTP-запроса, остальные данные указывают на то, что вы хотите использовать реальный шлюз, а не просто прокси.

Мне кажется, вам нужно запустить прокси-сервер HTTP, как Squid. У вас есть два варианта:

  1. Настройте браузеры клиентов на всех компьютерах для использования этого прокси-сервера. В этом случае все запросы будут отправлены ими непосредственно на прокси-сервер, который отправит запрос на реальный сервер и отправит ответ обратно им.
  2. Прозрачно перенаправьте все исходящие HTTP-запросы на прокси-сервер, используя iptables на клиентском шлюзе.
Другие вопросы по тегам