iptables: доступ соединенный openvpn клиент от LAN с сервером VPN

Я предлагаю, чтобы Вы рассмотрели хостинг на платформе, которая разработана для масштабирования хорошо. Примерами были бы облачные поставщики, такие как EC2, размещенные вычислительные платформы как приложения Google и платформы приложения хоста как wordpress.com. Вы хотите что-то, что привыкло сильно пострадать, но это не заряжает Вас цены на "большую железяку" за исключением тех редких времен при необходимости в нем.

Также думайте о хороших методах CDN как хостинг на EC2, но наличие Вашего притона приложения он помещается в S3, и заставьте тот сервис взять большую часть избиения в случае landrush. Cloudfront мог бы также быть полезным здесь.

Хостинг с поставщиком, который действительно увеличивает объем хостинга для определенного приложения (такого как wordpress.com) является также одним способом быть готов к неожиданному (или в Вашем ожидаемом случае, но un-timeable) всплески трафика.

Используя CMS делает вещи как CDNs, кэширование на границе сети, и т.д. намного тяжелее, но это может все еще быть сделано, по крайней мере, для освещения загрузки. Безотносительно CMS, который Вы используете, удостоверьтесь, что он имеет настройки для того, чтобы установить значения кэша на различных битах содержания, имеет способ поместить данные, к которым часто получают доступ, в кэш-память или выставить его к CDN, и т.д.

Этот ответ меньше о CMS и больше о платформе и общих предложениях больше, чем определенный ответ, но я надеюсь, что это помогает Вам думать о проблеме. Как системный администратор, который также работает в EMS, я знаю, что объединение этих полей не является никакой простой задачей.

3
задан 19 December 2013 в 20:53
1 ответ

После очередного изнурительного раунда безумного онлайн-обучения iptables я обнаружил решение.

Во-первых, однако, есть неверное предположение относительно iptables. Мой первоначальный подход к правилам заключался в том, что при получении пакета он проходил через цепочки INPUT и OUTPUT. Не так; Как только правило соответствует пакету, оно покидает таблицу. Поскольку таблица фильтров предполагается, если не указано иное (например, "-t nat"), большинство перечисленных правил выполняется в таблице фильтров.

Что касается цепочек

  • INPUT : запускать для пакетов, предназначенных для сервера
  • OUTPUT : запускать пакеты, исходящие от сервера
  • FORWARD : все остальное - если здесь соответствует правило, и «прыжок» (мне нравится думать, если -j как "работа";) ПРИНИМАЕТСЯ, пакет будет маршрутизирован соответствующим образом

Разбивка правил

Это описание правил в разделе Текущие настройки выше

iptables -t filter -F
iptables -t nat -F

Эти правила просто сбрасывают фильтр и нац таблицы. Обратите внимание, что существует больше таблиц и более тщательный способ очистки правил iptables.

iptables -A INPUT -i tun+ -j ACCEPT

Это правило ничего не делает, потому что:

  • оно выполняется для трафика, предназначенного для VPN1, а не для другой сети
  • для него не задана политика входящий трафик, поэтому по умолчанию разрешен

движение дальше ...

iptables -A FORWARD -i tun+ -j ACCEPT

Это правило разрешает маршрутизацию трафика, исходящего из 10.8.8.0/24. Правила в таблице nat применяются к пакетам, которые соответствуют этому правилу.

iptables -A INPUT -i eth0 -j ACCEPT -d 10.8.8.0/24

Это правило также не влияет на желаемую маршрутизацию, поскольку трафик 10.8.8.0/24 не предназначен для сервера VPN1.

iptables -A FORWARD -i eth0 -j ACCEPT

] Это правило разрешает трафик с 10.10.10. 0/16 для маршрутизации.

iptables -t nat -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24 -o tun+ -j MASQUERADE

Это правило приводит к тому, что трафик, предназначенный для VPN с 10.10.10.0/16, выглядит так, как будто он исходит от VPN1, что фактически заставляет VPN1 выглядеть как шлюз.

Что не так?

Правила должны быть "ОК", чтобы передавать трафик из одной сети в другую. Нет никакой реальной защиты - например, политики "DROP" по умолчанию и т. Д., Но вопрос не в этом.

Если iptables настроен так, что он может маршрутизировать трафик через VPN, что заставит его отправить обратно через eth0 на шлюз? Если бы VPN1 не знал о 10.8.8.0/24. Если VPN-сервер не знает об этой сети, он будет рассматриваться как интернет-трафик и отправлен обратно на шлюз.

Исправление

Решение заключалось в том, чтобы сообщить VPN-серверу о сети (это openvpn сервер). Есть два способа сделать это; если сервер обслуживает только одну сеть, это простая настройка конфигурации:

server 10.8.8.0 255.255.255.0

В моем случае у меня был настроен маршрут сервера, и мне нужно, чтобы он знал о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

если сервер обслуживает только одну сеть, это простая настройка конфигурации:

server 10.8.8.0 255.255.255.0

В моем случае у меня был настроен маршрут сервера, и мне нужно, чтобы он знал о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

если сервер обслуживает только одну сеть, это простая настройка конфигурации:

server 10.8.8.0 255.255.255.0

В моем случае у меня был настроен маршрут сервера, и мне нужно, чтобы он знал о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

это простой параметр конфигурации:

server 10.8.8.0 255.255.255.0

В моем случае у меня был настроен маршрут сервера, и мне нужно, чтобы он знал о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

это простой параметр конфигурации:

server 10.8.8.0 255.255.255.0

В моем случае у меня был настроен маршрут сервера, и мне нужно было знать о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

и мне нужно было знать о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

и мне нужно было знать о дополнительной сети. Конфигурация выглядела примерно так:

server 10.5.5.0 255.255.255.0
route 10.8.8.0 255.255.255.0

Вот и все! Как только у VPN1 есть маршрут к сети, цепочка FORWARD может маршрутизировать трафик.

Лучшая настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явные правила для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигает сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный из 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

Улучшенная настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явных правил для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигнет сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный с 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

Улучшенная настройка iptables

После очистки iptables лучшая конфигурация будет выглядеть примерно так:

# Forward established traffic so that (in the above case) VPN1 doesn't
# drop responses from the client, A.K.A. "the magic"
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD     -s 10.10.10.0/16 -d 10.8.8.0/24  -j ACCEPT
iptables -t nat    -A POSTROUTING -s 10.10.10.0/16 -d 10.8.8.0/24  -j MASQUERADE

# Drop everything else that wants to be forwarded
iptables -P FORWARD DROP

Обратите внимание, что нет явных правил для трафика, поступающего из 10.8.8.0/24, что означает, что по умолчанию трафик не достигнет сети 10.10.10.0/16 - за исключением трафика в ответ на трафик, отправленный с 10.10.10.0/16. Теперь, когда iptables настроен, клиентам может быть назначен IP-адрес в конфигурации VPN и добавлен в DNS для полного решения.

2
ответ дан 3 December 2019 в 07:03

Теги

Похожие вопросы