У нас есть 2 сервера: сервер1, сервер2. Мой компьютер - клиент1. У нас есть сервер VPN, работающий на сервере1 с IP 1.2.3.4 (просто пример). Мы хотим скрыть некоторые службы за VPN, включая sshd и vnc server.

Часть конфигурации vpn:

server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "remote-gateway vpn_server_ip"
push "dhcp-option DNS 8.8.8.8"

Часть конфигурации iptables:

PRIVATE=10.8.0.0/24
sudo iptables -t nat -A POSTROUTING -s $PRIVATE -o eno1 -j MASQUERADE

Что работает: если я подключен к VPN, я могу подключиться к server2 по ssh (скажем, по IP 1.2.3.5), и в последнем сообщении о входе в систему из SSH вместо IP-адреса отображается адрес VPN-сервера.

ssh server2

приведет к:

Last login: Tue Aug  2 15:55:46 2016 from server1

Но когда я подключаюсь к нашему server1, на котором работает VPN, у меня все еще есть свой IP (он также включен в брандмауэре):

ssh server1

выход:

Last login: Tue Aug  2 15:57:38 2016 from client1

Я хочу, чтобы там IP сервера 1.2.3.4 вместо client1 IP. Поэтому я могу принимать только пакеты от server1 в нашем брандмауэре. Теперь это работает для server2, но не для server1, потому что POSTROUTING влияет только на выходные пакеты.

0