Я пытаюсь использовать iptables для перенаправления исходящего трафика на внешний IP-адрес, как если бы это был входящий трафик. Моя установка выглядит следующим образом;
NET A NET B
|------| |------| |--|
|SERVER|<----->|DD-WRT|<----->|FW|<--> WAN
|------| | |------| |--|
|
|------| |
| COMP |<--|
|------|
Где SERVER и COMP - это компьютеры в сети A, а DD-WRT - это маршрутизатор, соединяющий сети A и B, а FW - это большой межсетевой экран, соединяющий сеть B с WAN.
У меня правильно настроена переадресация портов на моем маршрутизаторе DD-WRT и большой брандмауэр для пересылки пакетов на СЕРВЕР, когда внешние компьютеры пытаются подключиться к FW. Однако, когда COMP пытается подключиться к FW, пакеты отбрасываются, потому что FW не распознает, что пакеты, приходящие внутри, предназначенные для адреса WAN, предназначены для маршрутизации в соответствии с внешними правилами.
Поэтому я хотел бы каким-то образом маршрутизировать пакеты, исходящие из COMP, предназначенные для WAN-адреса FW, чтобы они отображались DD-WRT, как если бы они вместо этого были предназначены для его адреса в сети B, поскольку я знаю, что он способен правильно маршрутизировать эти типы пакетов. .
Если у кого-то еще есть предложение получше, я, конечно, был бы рад его услышать!
Я предполагаю, что вы выполняете NAT для трафика из NET A в NET B, и в этом случае вам нужно будет добавить правило для исключения трафика из NET A, предназначенного для адреса NET B DD-WRT - что-то вроде :
iptables -t nat -I POSTROUTING -s <net.a.ip.block/mask> -d <dd-wrt.net.b.address> -j ACCEPT
или вы можете переписать адрес так:
iptables -t nat -I PREROUTING -s <net.a.ip.block/mask> -d <dd-wrt.net.b.address> -j DNAT --to <SERVER.net.a.address>
РЕДАКТИРОВАТЬ: правильно перечитав вопрос, вам понадобится вариант второго метода:
iptables -t nat -I PREROUTING -s <net.a.ip.block/mask> -d <fw.wan.add.ress> -j DNAT --to <server.net.a.address>