Маршрутизация интернет-трафика через компьютер в другой подсети
У меня есть 2 ящика debian, и я хотел бы использовать один из них в качестве сервера vpn, а другой - в качестве клиента. Цель состоит в том, чтобы клиент мог получить доступ к Интернету через Интернет-соединение сервера. Другими словами:
client(encrypted packets) ---> ISP1 ----> ISP2 ----> server(decrypts packets) ---->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 route change default via 10.4.0.2
Между тем, вам необходимо создать правило NAT в политике брандмауэра сервера, чтобы весь интернет-трафик принимался исходящим от самого сервера. Предположим, что сетевой интерфейс с выходом в Интернет eth0
, правило NAT выглядит следующим образом:
iptables -t nat -A POSTROUTING -s 10.4.0.0/24 -o eth0 -j MASQUERADE
Надеюсь, это поможет.