У меня есть сервер Ubuntu 16.04, настроенный как шлюз OpenVPN в моей сети с IP 192.168.10.14, выходящим через tun1
Любой клиент, который использует 192.168.10.14 в качестве своего шлюза, отправляется через VPN-туннель в интернет. если я использую ipleak.net, у каждого клиента есть IP-адрес конечной точки VPN, а не мой собственный
У меня есть настройка UFW на шлюзе VPN (192.168.10.14), так что если я отключу VPN-туннель, то любой клиент сможет больше не выходят в интернет, так как UFW разрешает выход только через tun1
Проблема, с которой я столкнулся, заключается в том, что если я отключу VPN-туннель на 192.168.10.14, то все браузеры перестанут работать, что я и хочу. если они пингуют google.com, я не получаю ответа. но если они пропингуют IP-адрес, скажем, 8.8.8.8, тогда эхо-запрос все еще работает, даже если шлюз VPN не работает. в результатах пинга я получаю
64 bytes from 8.8.8.8: icmp_seq=6 ttl=57 time=19.1 ms
From 192.168.10.14: icmp_seq=7 Redirect Host(New nexthop: 192.168.10.1)
64 bytes from 8.8.8.8: icmp_seq=7 ttl=57 time=19.0 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=57 time=18.6 ms
, где 192.168.10.1 в следующем окне - мой маршрутизатор. Таким образом, ping к ip игнорирует правила брандмауэра на блоке VPN, или блок vpn по какой-то причине перенаправляет его непосредственно на маршрутизатор
, есть ли что-нибудь, что я могу сделать на блоке VPN, чтобы остановить это. ИЛИ на клиентах? я бы предпочел на VPN-машине, если у меня нет (или может быть не в состоянии) настроить настройку переадресации клиентов
на блоке VPN
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun1 -j MASQUERADE
#
# For IP Forwarding through PIA
#
iptables -A FORWARD -i eth0 -o tun1 -j ACCEPT
iptables -A FORWARD -i tun1 -o eth0 -j ACCEPT
правила ufw на блоке VPN
]To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] Anywhere ALLOW OUT Anywhere on tun1 (out)
[ 3] Anywhere ALLOW IN 192.168.10.0/24
[ 4] 1198/udp ALLOW OUT Anywhere (out)
маршрут по IP-адресу (VPN-туннель вверх)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.6.10.5 128.0.0.0 UG 0 0 0 tun1
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
10.6.10.1 10.6.10.5 255.255.255.255 UGH 0 0 0 tun1
10.6.10.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
128.0.0.0 10.6.10.5 128.0.0.0 UG 0 0 0 tun1
172.98.67.68 192.168.10.1 255.255.255.255 UGH 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
маршрут по VPN-серверу (VPN-туннель вниз)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
ping из VPN-сети в 8.8. 8.8 (VPN-туннель отключен)
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
маршрут на клиентском компьютере
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.14 0.0.0.0 UG 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Проблема с "обходом" происходит из-за маршрута по умолчанию на поле VPN. Который необходим и не может быть удален, и IP передача все еще включена. Передача IP работает на основе интерфейса, не IP-адреса
Ваш VPN box
идет ip 192.168.10.14
и можно добавить, вставляют ufw
ведьма правила будет инициирована, когда туннель снизится.
Включить /etc/network/if-down.d/
некоторый сценарий для вырезания доступа от клиентов к Вашему VPN box
Пример:
sudo nano /etc/network/if-down.d/scriptdown
и помещенное содержание
# Check for specific interface if desired
[ "$IFACE" != "tun1" ] || exit 0
# cat access from client
sudo ufw insert 1 deny in on eth0 from 192.168.10.0/24 to 192.186.10.14
дать scriptdown
полномочие
chmod 755 /etc/network/if-down.d/scriptdown
if-down.d
инициирует названный сценарий scriptdown
когда tun1
искать down
и отклонит трафик от 192.168.10.0/24
кому: 192.168.10.14
Вам нужен сценарий для удаления этого правила когда tun1
произошел
Включить /etc/network/if-up.d/
сценарий для предоставления доступа от клиентов к Вашему VPN box
sudo nano /etc/network/if-up.d/scriptup
и помещенное содержание
# Check for specific interface if desired
[ "$IFACE" != "tun1" ] || exit 0
# cat access from client
sudo ufw delete 1
дать scriptup
полномочие
chmod 755 /etc/network/if-down.d/scriptup
if-up.d
инициирует названный сценарий scriptup
когда tun1
искать up
и позволит трафик от 192.168.10.0/24
кому: 192.168.10.14
Попробовать.