como encaminhar para o servidor + encapsulamento de hosts específicos do túnel embora cliente openvpn em tomate

1

Execução do Shibby Tomato v130 em um Asus RT-N66U.

Meus objetivos são os seguintes

  1. Com a Transmissão em execução no roteador, todas as rotas de tráfego de torrent passam por um cliente OpenVPN também em execução no roteador. Nenhum outro tráfego irá embora através da VPN.
  2. Estou executando um servidor da web separado em um IP interno estático de 192.168.1.3. Desejo encaminhar as portas WAN 80 e 443 para o servidor.

Eu posso conseguir 1 ou 2 trabalhando um de cada vez, mas não consigo fazer com que ambos trabalhem ao mesmo tempo.

Primeiro, eu criei uma segunda LAN usando o Tomato GUI (br1) e dei o endereço IP 192.168.2.1. Eu do que a transmissão atribuída para usar este IP modificando a linha do arquivo de configuração settings.json "bind-address-ipv4": "192.168.2.1",

Em segundo lugar, usando uma versão ligeiramente modificada do script de up up da WAN publicado nesta resposta para howto somente encapsulamento de hosts específicos através do cliente openvpn em tomate [fechado]

# This code goes in the WAN UP section of the Tomato GUI.
#
# This script configures "selective" VPN routing. Normally Tomato will route ALL traffic out
# the OpenVPN tunnel. These changes to iptables allow some outbound traffic to use the VPN, and some
# traffic to bypass the VPN and use the regular Internet instead.
#
#  To list the current rules on the router, issue the command:
#      iptables -t mangle -L PREROUTING
#
#  Flush/reset all the rules to default by issuing the command:
#      iptables -t mangle -F PREROUTING
#

#
# First it is necessary to disable Reverse Path Filtering on all
# current and future network interfaces:
#
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
      echo 0 > $i
done

#
# Delete and table 100 and flush any existing rules if they exist.
#
ip route flush table 100
ip route del default table 100
ip rule del fwmark 1 table 100
ip route flush cache
iptables -t mangle -F PREROUTING

#
# Copy all non-default and non-VPN related routes from the main table into table 100.
# Then configure table 100 to route all traffic out the WAN gateway and assign it mark "1"
#
# NOTE: Here I assume the OpenVPN tunnel is named "tun11".
#
#
ip route show table main | grep -Ev ^default | grep -Ev tun11 \
  | while read ROUTE ; do
      ip route add table 100 $ROUTE
done
ip route add default table 100 via $(nvram get wan_gateway)
ip rule add fwmark 1 table 100
ip route flush cache

#
# Define the routing policies for the traffic. The rules will be applied in the order that they
# are listed. In the end, packets with MARK set to "0" will pass through the VPN. If MARK is set
# to "1" it will bypass the VPN.
#
# EXAMPLES:
#
#  All LAN traffic will bypass the VPN (Useful to put this rule first, so all traffic bypasses the VPN and you can configure exceptions afterwards)
#    iptables -t mangle -A PREROUTING -i br0 -j MARK --set-mark 1
#  Ports 80 and 443 will bypass the VPN
#    iptables -t mangle -A PREROUTING -i br0 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 1
#  All traffic from a particular computer on the LAN will use the VPN
#    iptables -t mangle -A PREROUTING -i br0 -m iprange --src-range 192.168.1.2 -j MARK --set-mark 0
#  All traffic to a specific Internet IP address will use the VPN
#    iptables -t mangle -A PREROUTING -i br0 -m iprange --dst-range 216.146.38.70 -j MARK --set-mark 0
#  All UDP and ICMP traffic will bypass the VPN
#    iptables -t mangle -A PREROUTING -i br0 -p udp -j MARK --set-mark 1
#    iptables -t mangle -A PREROUTING -i br0 -p icmp -j MARK --set-mark 1

# By default all traffic bypasses the VPN
iptables -t mangle -A PREROUTING -i br0 -j MARK --set-mark 1

# Only foward to Transmission
iptables -t mangle -A PREROUTING -i br0 -m iprange --src-range 192.168.2.1 -j MARK --set-mark 0

Eu sou capaz de obter apenas o roteamento de tráfego de Transmissão através da VPN com todos os outros computadores que passam pela WAN normal. No entanto, a execução deste script parece eliminar minha porta para o servidor e não consigo mais acessar o servidor de fora da rede.

Eu configurei as portas TCP 80 e 443 para serem encaminhadas para 192.168.1.3 na GUI do Tomato. Verificando ambos iptables -L -vn e iptables -L -vn -t nat antes de executar o script de up up da WAN (o servidor pode ser acessado de fora, mas a VPN ainda não está em execução)

iptables -L -vn mostra

Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.1.3         tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.1.3         tcp dpt:443

iptables -L -vn -t nat mostra

Chain WANPREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           to:192.168.1.1
    1    40 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 to:192.168.1.3:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 to:192.168.1.3:443

Poste a execução do script de atualização da WAN

iptables -L -vn mostra

Chain wanin (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.1.3         tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.1.3         tcp dpt:443

iptables -L -vn -t nat mostra

Chain WANPREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           to:192.168.1.1
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 to:192.168.1.3:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 to:192.168.1.3:443

Ambos da mesma forma que antes, mas não consigo acessar o servidor na porta 80 ou 443 de fora da rede.

Portanto, a questão simples é usar esse script WAN up ou algo semelhante. Como faço para encaminhar portas para um IP específico e mantê-las fora da VPN?

    
por Matt46 29.06.2015 / 02:16

0 respostas