В офисе есть сеть. В сети есть маршрутизатор на базе FreeBSD, а снаружи - сервер на базе CentOS.
Задача: обеспечить доступ из любой точки к сети в офисе.
Данные: сеть - 192.168.0.0 за FreeBSD с bge0 (192.168.0.111) и re0 (192.168.1.2 - в подсети модема). Внешний сервер - xx.xx.xx.xx. FreeBSD в сети OpenVPN - 192.168.255.6, адрес сервера CentOS - 192.168.255.1.
Проблема: нет доступа к внутренней сети с внешнего сервера (я могу получить доступ к маршрутизатору FreeBSD), но я могу получить доступ к внешнему серверу из моей сети. Мне нужно получить доступ к внутренней сети с внешнего сервера.
Вне конфигурации OpenVPN сервера CentOS:
dev tun
port 1194
proto udp
mode server
tls-server
server 192.168.255.0 255.255.255.0
push "route 192.168.255.0 255.255.255.0"
route 192.168.0.0 255.255.255.0 192.168.255.2
push "dhcp-option DNS 192.168.255.1"
client-config-dir /etc/openvpn/ccd
client-to-client
ifconfig-pool-persist addr_list
comp-lzo
tun-mtu 1500
keepalive 10 60
persist-key
persist-tun
cipher DES-EDE3-CBC
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
tls-auth /etc/openvpn/ta.key 0
status openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4
Конфигурация FreeBSD:
client
proto udp
dev tun
remote xx.xx.xx.xx 1194
comp-lzo
resolv-retry infinite
persist-tun
persist-key
ca /usr/local/etc/openvpn/ca.crt
cert /usr/local/etc/openvpn/freebsd-client.crt
key /usr/local/etc/openvpn/freebsd-client.key
dh /usr/local/etc/openvpn/dh1024.pem
tls-auth /usr/local/etc/openvpn/ta.key 1
tls-client
cipher DES-EDE3-CBC # Triple-DES
verb 4
route-method exe
route-delay 2
ping 100
ping-restart 200
/ etc / openvpn / ccd / freebsd-client содержимое:
push "route 192.168.255.0 255.255.255.0"
iroute 192.168.0.0 255.255.255.0
На FreeBSD:
# ps aux | grep natd
/sbin/natd -n re0
/sbin/natd -n tun0 -p 8669
# ipfw show
00039 12203 876046 fwd 192.168.0.111,80 tcp from 192.168.0.0/24 to 192.168.0.111 dst-port 80
00040 322269 40046856 fwd 192.168.0.111,3128 tcp from 192.168.0.0/24 to any dst-port 80,433,8080
00050 2885463 1611968772 divert 8668 ip4 from any to any via re0
00060 5675 1094008 divert 8669 ip from any to any via tun0
00100 28440 2126360 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
65000 4241769 2426143908 allow ip from any to any
65535 1 78 deny ip from any to any
# netstat -nr -finet
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGS 22 3312575 re0
127.0.0.1 link#4 UH 0 56564 lo0
192.168.0.0/24 link#1 U 3 166750211 bge0
192.168.0.111 link#1 UHS 0 12 lo0
192.168.1.0/24 link#2 U 1 235840 re0
192.168.1.2 link#2 UHS 0 36 lo0
192.168.255.0/24 192.168.255.5 UGS 0 20 tun0
192.168.255.5 link#5 UH 0 0 tun0
192.168.255.6 link#5 UHS 0 0 lo0
В CentOS:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.255.2 * 255.255.255.255 UH 0 0 0 tun0
xx.xx.xx.0 * 255.255.255.0 U 0 0 0 eth0
xx.xx.yy.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.255.2 255.255.255.0 UG 0 0 0 tun0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
192.168.255.0 192.168.255.2 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default xx.xx.xx.1 0.0.0.0 UG 0 0 0 eth0
$ ip route get 192.168.0.111
192.168.0.111 via 192.168.255.2 dev tun0 src 192.168.255.1
cache mtu 1500 advmss 1460 hoplimit 64
Я пингую 192.168.0.111 из CentOS и получаю следующее:
В CentOS:
$ tcpdump -i tun0
tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
11:34:48.963629 IP 192.168.255.1 > 192.168.0.111: ICMP echo request, id 40524, seq 1, length 64
11:34:49.973944 IP 192.168.255.1 > 192.168.0.111: ICMP echo request, id 40524, seq 2, length 64
11:34:50.974007 IP 192.168.255.1 > 192.168.0.111: ICMP echo request, id 40524, seq 3, length 64
11:34:51.974075 IP 192.168.255.1 > 192.168.0.111: ICMP echo request, id 40524, seq 4, length 64
И тишина на FreeBSD:
tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type NULL (BSD loopback), capture size 96 bytes
Кто-нибудь может мне помочь?
Вы уверены, что маршрутизация между интерфейсами активирована? / proc / sys / net / ipv4 / ip_forward
Попробуйте выполнить эхо-запрос VPN, прежде чем пытаться выйти за пределы VPN.
На вашем месте я бы посмотрел на ClearOS. Это система на основе CentOS с исключительным веб-графическим интерфейсом, она может делать то, что вы хотите, примерно за 15 минут. Это не обязательно должен быть ваш шлюз, и, судя по вашему вопросу, я уверен, что вы сможете настроить его как устройство в своей сети. Он может предоставлять PPTP и OpenVPN, если у вас есть пользователи Windows, которым также необходимо получить доступ.