Наконец, я запустил OpenVPN, но теперь мне очень не хватает доступа ко всем моим веб-сервисам (apache, ftp, ssh и т. Д.) Через VPN-сервер. Есть ли просто способ направить весь трафик от моего wlan1 устройство для tap0?
server.conf:
port 1193
proto tcp
dev tap0
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
ifconfig-pool-persist ipp.txt
server 10.8.0.0 255.255.255.0
keepalive 10 120
;tls-auth ta.key 0 # This file is secret
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 2
Я действительно надеялся, что этот форвард решит проблему, но это было не так:
/sbin/iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
/sbin/iptables -A FORWARD -i wlan -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
Настроить:
Это в основном моя установка: DSL router -> Wireless router -> Ubuntu server
.
На Ubuntu server
Я размещал apache, ssh и другие серверные приложения и службы. Когда клиент обращается к моему серверу через VPN, я хотел бы получить доступ ко всем этим услугам.
Вы все еще не предоставили много деталей, поэтому я предполагаю, что ваша установка выглядит следующим образом. Обычно вы получаете доступ к службам на своем сервере по его общедоступному IP-адресу (или имени хоста, которое разрешает его), например http://1.2.3.4/
. Когда вы запускаете VPN, OpenVPN подключается к тому же общедоступному IP-адресу 1.2.3.4, и пока VPN работает, вы получаете доступ к службам, используя частный IP-адрес VPN сервера, например http://10.8.0.1/
. Вы хотите иметь возможность использовать общедоступный IP-адрес независимо от того, работает VPN или нет.
Лучшее решение - использовать отдельный IP-адрес для сервера OpenVPN, поскольку это значительно упрощает маршрутизацию. Однако я предполагаю, что у вас нет этой возможности.
Проблема в том, что даже когда вы маршрутизируете весь трафик через VPN, трафик на общедоступный IP-адрес VPN-сервера должен маршрутизироваться через шлюз по умолчанию, чтобы зашифрованные пакеты VPN действительно попали туда. Таблица маршрутизации выглядит примерно так:
192.168.0.0/24 dev eth0
1.2.3.4/32 via 192.168.0.1
10.8.0.1/32 dev tun0
default via 10.8.0.1
Поскольку другие службы, к которым вы пытаетесь получить доступ, используют тот же IP-адрес, что и VPN-сервер, они также маршрутизируются напрямую через шлюз по умолчанию. Единственный способ обойти это - использовать маршрутизацию на основе портов, которая настроена следующим образом:
Создайте новую таблицу маршрутизации (нужно сделать только один раз):
echo 1 vpn >> /etc/iproute2/rt_table
Маршрутизируйте все, используя эту новую таблицу, через VPN:
ip route add default via 10.8.0.1 table vpn
Скажите ядру использовать эту новую таблицу для всех пакетов с определенной меткой межсетевого экрана:
ip rule add fwmark 0x01 lookup vpn
Настройте правила брандмауэра, чтобы отметить пакеты, которые вы хотите маршрутизировать через VPN:
iptables -t mangle -A OUTPUT -p tcp -j MARK --set-mark 0x01
iptables -t mangle -A OUTPUT -p udp ! --dport 1193 -j MARK --set-mark 0x01
Вы, вероятно, захотите настроить это в up
скрипт на клиенте и разорвать его в down
сценарий.