Столкнулся с проблемой отсутствия необходимого опыта
есть машинка с freebsd и двумя сетевыми интерфейсами (с интернетами от разных провайдеров)
1. смотрит в интернеты через pppoe соединение, динамический айпи
2. смотрит в локалку и интернеты через другой шлюз, внутренний ип статически, на шлюзе динамический
на машинке имеется сервер hlds (cs1.6) и хочется вывести его наружу на все интерфейсы. но с этим и проблема. сервер видится в интернетах, только на том ip для которого выставлен дефолтный шлюз.
пока реализовано вот так, через ipfw
Код: Выделить всё
#!/bin/sh
net1_if="re0"
net1_gw="192.168.88.254"
net1_ip="192.168.88.222"
net2_if="tun0"
net2_gw=`ifconfig tun0 | grep inet | awk '{print $4}'`
net2_ip=`ifconfig tun0 | grep inet | awk '{print $2}'`
local_if="lo0"
####
echo "net2 gw = $net2_gw"
echo "net2 ip = $net2_ip"
setfib 0 route delete default
setfib 1 route delete default
setfib 2 route delete default
route add default $net1_gw
#route add default $net2_gw
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush
ipfw add allow ip from any to any via $local_if
ipfw add fwd $net2_gw ip from $net2_ip to any
ipfw add allow ip from any to anyПосле добавления
ipfw add fwd $net2_gw ip from $net2_ip to any
стало возможно соединятся с сервером через ssh по $net2_ip, без этого соединение попросту висит (как я подозреваю, пакеты хотят уйти по default gateway).
Но это не помогает для hlds(udp, 27015). Проверяю доступность сервера через HLSW Mobile и все время получаю отлуп.
В tcpdump вижу
02:43:52.878968 IP s9c.hlsw.org > мой_адрес: ICMP echo request, id 18346, seq 1, length 64
02:44:03.061611 IP s9b.hlsw.org.50781 > мой_адрес.27015: UDP, length 25
02:44:03.061686 IP s9b.hlsw.org.50781 > мой_адрес.27015: UDP, length 9
02:44:03.061732 IP s9b.hlsw.org.50781 > мой_адрес.27015: UDP, length 9
ничего в ответ не вылетает.
Если поменять default gw, то ситуация обратна: сервер видно через второго провайдера, а через первого нет.
Пробовал использовать setfib для создания различных таблиц маршрутизации, но с ним нужно биндить приложение на определенную таблицу, и для другой она будет так же недоступна. Возможно тут я заблуждаюсь.
Буду рад любым советам и предложениям по решению проблемки : )