Поделитесь своим VPN-соединением с другими пользователями локальной сети
У меня есть компьютер с одним физическим адаптером локальной сети, подключающийся к серверу VPN. Есть ли способ, которым я могу настроить (виртуальный) интерфейс шлюза на том же адаптере локальной сети таким образом, чтобы другие устройства в моей сети могли использовать его в качестве шлюза и пропускать свой трафик через это и VPN-соединение?
Большая часть моего ifconfig:
enp0s21f5 Link encap:Ethernet HWaddr 4c:cc:6a:d5:94:96
inet addr:192.168.1.120 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::76e3:9399:187d:fdad/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.11.0.2 P-t-P:10.11.0.2 Mask:255.255.0.0
inet6 addr: fdda:d0d0:cafe:1197::1000/64 Scope:Global
inet6 addr: fe80::c9b:2e1b:882:1637/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
И здесь информация о маршрутизации:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.11.0.1 0.0.0.0 UG 50 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s21f5
10.11.0.0 0.0.0.0 255.255.0.0 U 50 0 0 tun0
89.238.176.34 192.168.1.1 255.255.255.255 UGH 100 0 0 enp0s21f5
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s21f5
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s21f5
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
1 ответ
Ответ fugitive работает даже на Ubuntu 19.04, но если вам не нужно размещать интернет-соединение для других ваших устройств локальной сети, вы можете пропустить несколько шагов.
Если все устройства подключены к вашей локальной сети через Wi-Fi или проводной, вы можете просто использовать эти шаги:
Убедитесь, что ваш компьютер с подключением VPN может пересылать пакеты как маршрутизатор
- cat /proc/sys/net/ipv4/ip_forward ## это должно вернуть '1', если не выполняется шаг 2
- echo '1' >> / proc / sys / net / ipv4 / ip_forward
или вы можете использовать sysctl.conf
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p #persistent mode
затем установите для iptables значение NAT и пересылайте пакеты, полученные на локальном интерфейсе локальной сети и отправленные с интерфейса Tun (VPN)
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
iptables -A FORWARD -i wlan+ -o tun+ -j ACCEPT #change wlan+ to match your LAN adapter
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
Наконец, на другом компьютере вашей локальной сети, для которого вы хотите использовать вашу общую VPN - 1. с помощью команды route добавьте маршрут для подсетей VPN и установите в качестве шлюза IP-адрес сетевого адаптера локальной сети, который вы задали в iptables. (не tun, но адаптер wlan+ или en+)
пример: если компьютер с подключением VPN имеет адаптер en0 в локальной сети с IP-адресом 192.168.0.100, а доступная для VPN подсеть сети - 10.0.0.0/24
На другом компьютере вашей локальной сети без VPN-подключения вы должны ввести маршрут, подобный cmd -(для ОС Windows)
route add 10.0.0.0 mask 255.0.0.0 192.168.0.100 metric 200 if <interface>
Решение с wifi adapter
а также hostapd
программного обеспечения:
sudo apt-get install hostapd -y
конфигурировать hostapd
interface=wlan0
ssid=Your_WLAN
hw_mode=g # can be b/g/n
wpa=2
wpa_passphrase=PASS
wpa_key_mgmt=WPA-PSK WPA-EAP WPA-PSK-SHA256 WPA-EAP-SHA256
редактировать /etc/network/interfaces
auto wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
address 192.168.0.1
netmask 255.255.255.0
Поскольку ваш компьютер является маршрутизатором, вам необходимо включить переадресацию на интерфейсы
- 1-й путь
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
# постоянный режим - 2-й -
echo 1 > /proc/sys/net/ip/ipv4/ip_forward
Чтобы включить его при загрузке и запустить его: systemctl enable hostapd && systemctl start hostapd
устанавливать dnsmasq
так как это будет и ваш DNS и сервер DHCP.
sudo apt install dnsmasq
отредактируйте файл conf: vi /etc/dnsmasq.conf
interface=lo,wlan0
no-dhcp-interface=lo
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h
Iptables:
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
iptables -A FORWARD -i wlan+ -o tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
Дайте мне знать, если это работает для вас.