Я пытаюсь заставить сервер OpenVPN работать на моем Raspberry Pi. Raspberry Pi работает под управлением Arch Linux с OpenVPN версии 2.3.8-2.
В настоящее время я могу подключиться к серверу с устройства Android, но не могу получить доступ к Интернету (однако, я могу получить доступ к устройству, на котором размещен сервер OpenVPN, либо отправив эхо-запрос на его адрес eth0 192.168.86.3 или отправив эхо-запрос через tun0 на 10.8.0.1) , Я пробовал много разных конфигураций как с сервером OpenVPN, так и с iptables, но мне все еще не повезло, и я был бы признателен за помощь.
Вот конфигурация моего сервера:
port 443
proto tcp
dev tun0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/key.crt
key /etc/openvpn/keys/key.key
dh /etc/openvpn/keys/dh4096.pem
tls-auth /etc/openvpn/keys/ta.key 0
user nobody
group nobody
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
ifconfig-pool-persist ipp.txt
topology subnet
push "redirect-gateway def1"
push "route 192.168.86.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 192.168.86.1"
keepalive 10 120
comp-lzo
status openvpn-status.log
log-append /var/log/openvpn.log
verb 4
Моя конфигурация клиента:
client
dev tun
proto tcp
remote SERVER_IP 443
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>
key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
</tls-auth>
comp-lzo
verb 3
Вывод бегового маршрута на устройство android:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.0 * 255.255.255.0 U 0 0 0 tun0
Правила iptables на сервере:
# Generated by iptables-save v1.4.21 on Mon Nov 9 20:43:23 2015
*mangle
:PREROUTING ACCEPT [5137:447124]
:INPUT ACCEPT [3884:334912]
:FORWARD ACCEPT [624:36889]
:OUTPUT ACCEPT [2554:269872]
:POSTROUTING ACCEPT [3178:306761]
COMMIT
# Completed on Mon Nov 9 20:43:23 2015
# Generated by iptables-save v1.4.21 on Mon Nov 9 20:43:23 2015
*nat
:PREROUTING ACCEPT [737:37974]
:INPUT ACCEPT [413:18792]
:OUTPUT ACCEPT [7:508]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Nov 9 20:43:23 2015
# Generated by iptables-save v1.4.21 on Mon Nov 9 20:43:23 2015
*filter
:INPUT ACCEPT [3878:334408]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2564:271200]
-A INPUT -i tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT
COMMIT
# Completed on Mon Nov 9 20:43:23 2015
Пинг 8.8.8.8 не проходит. Пинг 10.8.0.1 успешен. Пинг 192.168.86.3 также завершается успешно.
Изменить: добавлены дополнительные детали
Вот вывод ifconfig на сервере:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.86.3 netmask 255.255.255.0 broadcast 192.168.86.255
inet6 fe80::30a2:e462:a8e7:64b8 prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:59:26:90 txqueuelen 1000 (Ethernet)
RX packets 39226 bytes 8815553 (8.4 MiB)
RX errors 0 dropped 100 overruns 0 frame 0
TX packets 14621 bytes 1395612 (1.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 131 bytes 10414 (10.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 131 bytes 10414 (10.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.1 netmask 255.255.255.0 destination 10.8.0.1
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)
RX packets 4719 bytes 369475 (360.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 984 (984.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
И результат запуска «traceroute 8.8.8.8» с клиента, пока я на нем.
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
1 10.8.0.1 (10.8.0.1) 2.718 ms 5.771 ms 2.981 ms
2 * * *
3 * * *
4 * * *
// And so on...
Изменить: дополнительная информация
Выход из sysctl -n net.ipv4.ip_forward
1
echo 1 > /proc/sys/net/ipv4/ip_forward
eth0
... пожалуйста, добавьтеifconfig
детали к вашему вопросуeth0
это правильно. Я добавил результаты бегаifconfig
в пост.sysctl -n net.ipv4.ip_forward
а также.Ответы:
Я отключил "systemd-networkd", который по умолчанию отключает пересылку IP для интерфейсов, перезагружается, и теперь это работает!
Изменить: Чтобы уточнить, я отключил "systemd-netword", потому что "systemd-networkd" предотвращал пересылку IP в конфигурации по умолчанию, и я не использовал его ни для чего. Я не отключил службу, чтобы отключить IP-пересылку.
источник
sysclt -n net.ipv4.ip_forward
к вам вопрос.sysclt -n net.ipv4.ip_forward