Маршрутизация Интернет-трафика через компьютер в другой подсети
У меня есть 2 ящика debian, и я хотел бы использовать один из них в качестве сервера vpn, а другой - в качестве клиента. Цель состоит в том, чтобы клиент мог получить доступ к Интернету через Интернет-соединение сервера. Другими словами:
клиент (зашифрованные пакеты) ---> ISP1 ----> ISP2 ----> сервер (расшифровывает пакеты) ----> ISP2
и наоборот для ответов.
Я настроил свои устройства TUN и могу пинговать. Так что, похоже, это проблема маршрутизации.
client# route -n
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlp1s0
0.0.0.0 0.0.0.0 0.0.0.0 U 1002 0 0 enp2s0
10.0.0.0 10.4.0.1 255.255.255.0 UG 0 0 0 tun1
10.4.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp2s0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp1s0
Очевидно, в настоящее время интернет-запросы маршрутизируются через 192.168.1.1
. Однако, если я установил прокси-сервер Mozilla Firefox на 10.0.0.0
, ничего не будет доступно. traceroute 10.0.0.0
показывает только 1 переход.
server# route -n
0.0.0.0 192.168.0.1 0.0.0.0 UG 202 0 0 eth0
10.0.0.0 10.4.0.2 255.255.255.0 UG 0 0 0 tun1
10.4.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
192.168.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
Что отсутствует?
Для этого потребуются как новые маршруты, так и брандмауэр, чтобы позволить клиенту получить доступ к Интернету через сервер.
Предположим, что соединение VPN используется для соединения клиента с сервером и VPN подсеть между клиентом и сервером является одноранговой, а идентификатор подсети: 10.40.0.0.
Вам необходимо изменить шлюз по умолчанию для клиента со следующим статическим маршрутом, чтобы он перенаправлял весь нелокальный трафик на сервер:
ip изменение маршрута по умолчанию через 10.4.0.2
Между тем вам необходимо создать правило NAT в политике брандмауэра сервера, чтобы весь Интернет-трафик принимался исходящим от самого сервера. Предположим, что сетевой интерфейс с выходом в Интернет - eth0
, правило NAT выглядит следующим образом:
iptables -t nat -A POSTROUTING -s 10.4.0.0/24 -o eth0 -j MASQUERADE
Надеюсь на это может помочь.