Используйте iptables nat для перенаправления шлюза на локальные ПК

3

У меня есть сервер Linux, который функционирует как шлюз для моей домашней сети. У него есть два Ethernet-устройства:

  • p3p1: WAN, публичный IP-адрес a.b.c.d
  • p2p1: LAN, частный IP-адрес 10.0.3.1/24

Он также подключается через туннель OpenVPN точка-точка к удаленному серверу Linux (который я также администрирую). Это добавляет устройство

  • tun2: VPN, частный IP-адрес 10.2.0.2/32

Вопрос в том, как сделать так, чтобы весь трафик от клиентов в локальной сети перенаправлялся через туннель OpenVPN?

Я могу перенаправить весь трафик (в том числе исходящий от сервера шлюза), используя опцию конфигурации VPN-клиента redirect-gateway def1. Но это не то, что я хочу.

Будет ли способ сделать это с помощью IPTables NAT?

Спасибо!

Фела Маслен
источник

Ответы:

1

Вот шаги, которые вы должны сделать:

  1. На первом этапе ваш локальный DHCP-сервер должен настроить клиентский шлюз по умолчанию на ваш адрес сервера. 10.0.3.1
  2. Затем используйте базу данных политики маршрутизации для маршрутизации трафика вашей локальной сети к p2p1шлюзу VPN по умолчанию позади и маршрутизации трафика ваших серверов к шлюзу по умолчанию позадиp3p1
  3. После этого вы получаете MASQUERADEтрафик, который приходит из вашей локальной сети и входит в VPN:
# enable ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# configure iptables
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -d 10.2.0.2/32 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -i p2p1 -o tun2 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
А. Фендт
источник
Шлюз по умолчанию уже установлен на сервере. Я не хочу перенаправлять весь трафик, только трафик, исходящий из локальной сети (то есть я не хочу перенаправлять трафик с самого сервера через VPN).
Фела Маслен
2
В этом случае удалите redirect-gateway def1директиву и создайте некоторые записи маршрутизации на основе политик: tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html Как вы сказали: каждый трафик из локальной сети направляется на шлюз VPN по умолчанию и трафик сервера идет к шлюзу по умолчанию за p3p1.
А. Фендт
1

Мне удалось сделать это с помощью IP-маршрутизации на основе политик, как отметил А. Фендт в комментарии:

  1. Вставьте новую таблицу IP-маршрутизации:

$ echo "200 vpndef1" | sudo tee -a /etc/iproute2/rt_tables

  1. Добавьте маршруты для перенаправления VPN:

$ sudo ip route add 10.0.3.0/24 via 10.0.3.1 dev p2p1 table vpndef1 $ sudo ip route add default via 10.2.0.1 dev tun2 table vpndef1

  1. Вставьте новое правило, чтобы направить трафик локальной сети в новую таблицу маршрутизации:

$ sudo ip rule add from 10.0.3.0/24 lookup vpndef1

Фела Маслен
источник