Назад | Перейти на главную страницу

Маршрутизация интернет-трафика через компьютер в другой подсети

Коробка Ubuntu сервер имеет 2 сетевых интерфейса:

eth0 50.57.71.100
eth1 10.182.161.100

Коробка Ubuntu клиент имеет 1 сетевой интерфейс:

eth0 10.177.30.100

сервер и клиент уже могут разговаривать друг с другом нормально. Вот это клиенттаблица маршрутизации:

10.176.0.0/12 via 10.177.0.1 dev eth0 
10.177.0.0/17 dev eth0  proto kernel  scope link  src 10.177.30.100
10.208.0.0/12 via 10.177.0.1 dev eth0 

Я включил переадресацию ipv4 на серверядро. Как я могу настроить это так, чтобы любой интернет-трафик с машины клиент проходит через сервер? (например, пинг 8.8.8.8)

Я пробовал добавить маршрут на клиент но потерял все сетевое подключение, пока не удалил его:

route add 10.182.161.100/32 dev eth0

Я попытался установить клиентшлюз по умолчанию для сервер но это не удается:

# route add default gw 10.182.161.100
SIOCADDRT: No such process

Если вам нужен трафик из сети за маршрутизатором 10.177.0.1 чтобы выйти по другому маршруту (конкретно к серверу), настройте маршрут в 10.177.0.1 указывает на сервер.

Это направит весь исходящий трафик, проходящий через 10.177.0.1 через сервер, и я не уверен, что вы этого хотите.

Вы можете установить OpenVPN сервер на вашем сервере и клиент на вашем клиенте. Используя "redirect-gateway def1", маршрут вашего клиента по умолчанию перенаправляется на ваш сервер.
После того, как у вас есть рабочая настройка OpenVPN, вам необходимо развернуть NAT (маскарад), чтобы избавиться от частных IP-адресов клиентов на стороне Интернета.

ОБНОВИТЬ: После комментария Эндрю Шульманса я продолжил исследование. Поскольку ваша цель - не безопасность туннеля, GRE туннель лучше соответствует вашим потребностям и его проще настроить. В вашем случае маршрут клиента по умолчанию должен указывать на сервер, и вам нужно выполнить маскировку:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Чтобы сделать правила iptables постоянными:

service iptables save