Запуск Shibby Tomato v130 на Asus RT-N66U.
Мои цели следующие
- Когда Transmission работает на маршрутизаторе, все потоки торрент-трафика проходят через клиента OpenVPN, также работающего на маршрутизаторе. Никакой другой трафик не пройдет через VPN.
- Я использую отдельный веб-сервер со статическим внутренним IP-адресом 192.168.1.3. Я хочу перенаправить порты WAN 80 и 443 на сервер.
Я могу заставить 1 или 2 работать по одному, но не могу заставить их работать одновременно.
Во-первых, я создал 2-ю локальную сеть с помощью Tomato GUI (br1) и дал ему IP-адрес 192.168.2.1. Затем я назначил Transmission использовать этот IP-адрес, изменив строку конфигурационного файла settings.json "bind-address-ipv4": "192.168.2.1",
Во-вторых , с использованием слегка измененной версии сценария WAN up, опубликованной в этом ответе, для того, чтобы туннелировать только определенные хосты через туннель openvpn client [closed]
# 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
Я могу получить только маршрутизацию трафика передачи через VPN со всеми другими компьютерами, идущими через обычную глобальную сеть. Тем не менее, выполнение этого скрипта, по-видимому, уничтожает мой порт на сервере, и я больше не могу получить доступ к серверу извне сети.
Я настроил TCP-порты 80 и 443 для перенаправления на 192.168.1.3 в томатном графическом интерфейсе. Проверка как iptables -L -vn
и iptables -L -vn -t nat
перед запуском сценария WAN up (доступ к серверу возможен извне, но VPN еще не работает)
iptables -L -vn
показывает
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
показывает
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
Пост, запускающий скрипт WAN up
iptables -L -vn
показывает
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
показывает
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
И то же, что и раньше, но я не могу подключиться к серверу через порт 80 или 443 из-за пределов сети.
Таким образом, простой вопрос заключается в том, как с помощью этого сценария подключения к глобальной сети или чего-то подобного, как перенаправить порты на определенный IP и сохранить их вне VPN?