Наша настройка такова:
+---------+ +------------+ /
| | | Modem | /
+-----------+------| Firewall|----+ Provider 1 +-------
__ | | | | | | /
___/ \_ | +------+----+ +---------+ +------------+ |
_/ \__ | | p4p1 | /
/ \ | | | |
| Local network -+ |Ubuntu srv | |Internet
\_ __/ | | |
\__ __/ | em1 | \
\___/ +------+----+ +------------+ |
| | Router | \
+----------+ Provider 2 +----------------
| | |
+------------+
Мы бы хотели, чтобы сервер Ubuntu мог использовать em1
интерфейс, специально для ftp трафика.
Я считаю, что это усложняет задачу, поскольку FTP создает соединения в пассивном режиме, которые должны быть правильно маршрутизированы через em1
. Я ошибаюсь, поднимая здесь красный флаг?
Нам не нужна и не нужна балансировка нагрузки, и локальная сеть не будет выходить в Интернет через em1
, так что это должно упростить задачу, поскольку серверу Ubuntu не нужно перенаправлять что-либо, исходящее из em1
.
У нас есть статический публичный адрес, присвоенный брандмауэру, но маршрутизатор провайдера 2 будет иметь динамический адрес, который нам понадобится для DynDNS или чего-то еще.
Я нашел это КАК и этот вопрос о переполнении стека но меня смущают значения этого скрипта.
Какие на самом деле значения IP1 и IP2? Какой будет маршрут по умолчанию для пакетов, исходящих с сервера ubuntu? Где установлен этот маршрут по умолчанию и какое значение? В моем случае P0_NET не нужен?
Как мне изменить этот сценарий, чтобы он соответствовал моему сценарию? Я считаю, что это должно по крайней мере быть
#!/bin/bash -v
#IPs of device connected to the internet
IP1=192.168.30.240 (or is it the public ip 85.12.34.56?)
#static IP provided by ISP2
IP2=192.168.0.10 (or is it the dynamic ip 190.12.34.56?)
#Your Gateways (type route in terminal it should be in the same line as default)
P1=192.168.30.1 #gateway provided by ISP1
P2=192.168.0.254 #gateway provided by ISP2
#Your Subnets
P1_NET=192.168.30.0/24 #local network subnet + p4p1
P2_NET=192.168.0.0/24 #em1 LAN
# NICs your internet interfaces
IF1=p4p1
IF2=em1
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2
Это не вопрос маршрутизации. Маршрутизация работает на уровне 3, т.е. IP-адреса, но для сортировки FTP-трафика вам понадобится информация уровня 4.
Убедитесь, что вы привязываете FTP-сервер только к IP-адресу em1, и он будет доступен только на этой стороне, а также с использованием пассивных портов на этом IP-адресе.
Для vsftpd привязка IP описана в https://askubuntu.com/questions/301028/how-to-use-specific-ip-with-vsftpd
Мне пришлось установить правильную маршрутизацию, как это, фильтрация не требуется, поскольку мы не устанавливаем маршрутизацию для соединений, инициированных сервером.
Вы должны установить имя таблицы в /etc/iproute2/rt_tables
255 local
254 main
253 default
0 unspec
200 wan3table
201 wan1table
а затем добавьте следующие маршруты:
ip route add 192.168.30.0/24 dev p4p1 table wan1table
ip route add default via 192.168.30.1 table wan1table
ip route add 192.168.0.0/24 dev em1 table wan3table
ip route add default via 192.168.0.254 table wan3table
ip rule add from 192.168.30.240 table wan1table
ip rule add from 192.168.0.10 table wan3table
ip route add 127.0.0.0/8 dev lo table wan1table
ip route add 127.0.0.0/8 dev lo table wan3table
ip route add 192.168.0.0/24 dev em1 table wan1table
ip route add 192.168.30.0/24 dev p4p1 table wan3table