Подключение клиента должно использовать соединение только для подсети внутри VPN
Помогите, пожалуйста, правильно настроить VPN маршрутизацию. Задачу, можно описать так: есть несколько клиентов, каждый из которых подключается к VPN серверу. На этих клиентах работают «блондинки», они ничего настроить в своих маршрутах не смогут. Нужно сделать так, что бы в рамках VPN сети, эти клиенты могли «видеть» друг друга, а весь остальной трафик (не относящийся к подсети VPN) продолжал ходить без изменений.
VPN сервер настроил на StrongSWAN. Его внешний ip адрес *.*.*.ip
Настройки ipsec VPN сервера
nano /etc/ipsec.conf
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=*.*.*.ip
leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightdns=8.8.8.8,8.8.4.4
rightsourceip=10.10.10.0/24
rightsendcert=never
eap_identity=%identity
Настроил пароли
nano /etc/ipsec.secrets
*.*.*.ip : RSA "/etc/ipsec.d/private/vpn-server-key.pem"
your_username1 %any% : EAP "your_password1"
your_username2 %any% : EAP "your_password2"
Выдал (спасибо гуглу) такую команду:
iptables -A INPUT -p udp --dport 500 --j ACCEPT
iptables -A INPUT -p udp --dport 4500 --j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -t nat -A POSTROUTING -j SNAT --to-source *.*.*.ip -o eth+
echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" | tee -a /etc/sysctl.conf
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
sysctl -p
Установил на тестовых клиентах CA сертификаты и подключился по логину и паролю. Клиенты получили ip адреса в подсети 10.10.10.0
. Между ними проходит пинг, но и весь трафик пошел через VPN. Я понимаю, что POSTROUTING
отправил весь трафик на интерфейс где задан внешний ip адрес vpn сервера. Но, что я должен сделать, что бы интернет клиентов оставался на своем месте, я не понимаю.
iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- anywhere anywhere to:*.*.*.ip