Мне удалось настроить 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 server.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
У меня отлично работает. Пара вещей, которые стоит проверить:
-A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.8.0.10
это то, что вы ищете :)
сам прошел через эту же проблему
Я вижу и предполагаю, что вы используете файл ccd для нажатия статического внутреннего IP-адреса? если да, то указанное выше правило должно работать при редактировании в iptables