У меня два сервера OpenVPN в разных местах.
Каждая машина в одном месте может проверять связь и подключаться к каждой машине в другом месте.
Моя проблема в том, что я использую SSH для подключения с машины A
в месте 1
машина B
в месте 2
и проверить машину B
с auth.log
, Я вижу, что соединение исходит из места 2
OpenVPN IP (10.0.0.2).
это это мои настройки OpenVPN и структура сети.
Правила межсетевого экрана:
Машина А
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.1
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Машина B
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.2
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Оба сервера OpenVPN имеют два физических интерфейса; eth0-external и eth1-LAN, а также OpenVPN tun0.
Думаю, моя проблема в том, что я использую NAT, но не знаю, как правильно маршрутизировать. Мне нужен реальный IP-адрес исходной машины.
Итак, в приведенном выше случае я хотел бы увидеть IP-адрес LAN (10.3.0.100) машины A
в машине B
с auth.log
когда A
подключается к B
.
Спасибо за помощь!
Я решил свою проблему, и теперь она у меня работает. Я изменил правила iptables для обеих машин на это:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE
iptables -t filter -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o tun0 -j ACCEPT