переадресация портов openvpn для SNAT или DNAT с помощью Iptables?

переадресация портов openvpn для SNAT или DNAT с помощью Iptables?

Мне удалось настроить OpenVPN и заставить его выдавать статические внутренние IP-адреса клиентам. Теперь проблема в том, что я пытаюсь назначить открытый порт каждому клиенту, так как теперь у них есть статический внутренний IP-адрес, что упрощает добавление правил. Проблемы у меня возникают с тем, как правильно это сделать через iptables.

Примером внутреннего статического IP-адреса клиента 10.8.0.10 может служить переадресация порта 1234.

Я пробовал это безуспешно, vpn использует udp и порт 1194, но пробовал нижеприведенные правила, измененные как udp и как tcp, и оба вместе. Обратите внимание, что vpn уже работает и имеет правила маскарада, но кроме этого iptables пуст.

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 10.8.0.10
iptables -A FORWARD -s 10.8.0.10 -p tcp --dport 1234 -j ACCEPT

Я также пробовал 10.8.0.1 в качестве шлюза и 10.8.0.10 в качестве клиента, требующего порт, все порты переадресованы.

iptables -t nat -A PREROUTING -d 10.8.0.1 -j DNAT --to-destination 10.8.0.10

Я пытаюсь сделать две вещи: во-первых, иметь возможность переадресовывать порт для каждого клиента и, при необходимости, статический публичный IP-адрес, если им нужно переадресовать все порты.

сервер openvpn.conf

local 123.123.123.123 #- your_server_ip goes here
port 1194 #- port
proto udp #- protocol
client-config-dir /etc/openvpn/ccd
push "route 10.8.0.0 255.255.0.0"
ifconfig-pool-persist /etc/openvpn/openvpn.dhcp 30
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push redirect-gateway def1
push dhcp-option DNS 8.8.8.8
push dhcp-option DNS 8.8.4.4
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

iptables-save:

# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*nat
:PREROUTING ACCEPT [4834:503608]
:POSTROUTING ACCEPT [1000:70847]
:OUTPUT ACCEPT [1000:70847]
-A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Aug 26 14:27:12 2012
# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*filter
:INPUT ACCEPT [21545:23742094]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14867:1938275]
COMMIT
# Completed on Sun Aug 26 14:27:12 2012

решение1

У меня все отлично работает. Пару вещей, которые нужно проверить:

  • Это не будет преобразовывать NAT-подключения, созданные с самого VPN-сервера, для этого вам понадобится правило в цепочке OUTPUT.
  • Настроен ли клиент на маршрутизацию?всетрафик через VPN? Если нет, вы можете обнаружить, что ответные пакеты не отправляются обратно через VPN.
  • Вы уверены, что используете IP-адрес клиентской стороны, а не серверной стороны клиентского соединения «точка-точка»?
  • Вам необходимо сопоставить в правиле определенный IP-адрес назначения, иначе вы будете перехватывать другие соединения на этом номере порта.
  • Преобразование всех подключений к 10.8.0.1 с помощью NAT может вызвать проблемы, поскольку все клиенты направляют трафик через этот IP-адрес.

решение2

-A  PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.8.0.10

это то, что вы ищете :)

сам прошел через эту же проблему

Я вижу и предполагаю, что вы используете файл ccd для передачи статического внутреннего IP? Если так, то указанное выше правило должно работать при редактировании в ваших iptables.

Связанный контент