Parece que esqueci de responder. Então é assim que eu finalmente resolvi isso:
- eu configuro a LAN1 para também hospedar um servidor DNS de encaminhamento
- Alterei minhas configurações de DHCP e alterei o servidor DNS do ISP para o local uma vez (LAN1)
- Eu escrevi um script no roteador 3g que obtém informações de rede, se configura como gateway local, altera o gateway LAN para apontar para si mesmo e que basicamente se parece com isso (deve ser executado logo após a conexão 3g via vwdial ser feita ( Eu tenho um script diferente para isso, pois eu gosto de manter isso em dia para ver a conexão bem-sucedida e quaisquer problemas de rede)):
#!/bin/sh
# get info
LOCAL_IP='tail -n 20 /var/log/messages | grep pppd | grep local | sed "s/.*IP address \(.*\)//"'
REMOTE_IP='tail -n 20 /var/log/messages | grep pppd | grep ": remote" | sed "s/.*IP address \(.*\)//"'
DNS1='tail -n 20 /var/log/messages | grep pppd | grep ": primary" | sed "s/.*DNS address \(.*\)//"'
DNS2='tail -n 20 /var/log/messages | grep pppd | grep ": secondary" | sed "s/.*DNS address \(.*\)//"'
echo got info LOCAL_IP=$LOCAL_IP REMOTE_IP=$REMOTE_IP DNS1=$DNS1 DNS2=$DNS2
# setup self as gateway
echo nameserver $DNS1>/etc/resolv.conf
echo nameserver $DNS2>>/etc/resolv.conf
route del default gw 192.168.1.1 eth0
route add default gw $REMOTE_IP ppp0
echo done setting up self with new params
# setup old gateway to forward to self
echo changing dplug routes
ssh [email protected] 'route del default gw X.Y.Z.W eth0'
ssh [email protected] 'route add default gw 192.168.1.7 eth1'
echo removing dplug LAN SNAT
ssh [email protected] 'iptables -t nat -D POSTROUTING -o eth0 -j SNAT --to-source A.B.C.D'
echo deleting WIFI SNAT
ssh [email protected] 'eval "$(cat firewall/iptables | grep "\-A POSTR" | grep -v "\#" | sed "s/-A/iptables -t nat -D/")"'
echo adding new WIFI SNAT
ssh [email protected] 'eval "$(cat firewall/iptables | grep "\-A POSTR" | grep -v "\#" | grep 192.168.2 | sed "s/\(-A .*\) -o .*/iptables -t nat -o eth1 -j SNAT --to-source 192.168.1.1/")"'
echo setting up dnsmasq DHCP for new values
ssh [email protected] 'echo "# this dnsmasq config file is generated by 3g router. do not edit.">/etc/dnsmasq.3g.conf'
ssh [email protected] "echo server=$DNS1>>/etc/dnsmasq.3g.conf"
ssh [email protected] "echo server=$DNS2>>/etc/dnsmasq.3g.conf"
ssh [email protected] "echo dhcp-option=net:wlan,6,$DNS1,$DNS2>>/etc/dnsmasq.3g.conf"
ssh [email protected] "echo dhcp-option=net:lan,6,$DNS1,$DNS2>>/etc/dnsmasq.3g.conf"
echo restarting dnsmasq
ssh [email protected] '/etc/init.d/dnsmasq restart'
echo all done
/etc/dnsmasq.3g.conf está incluído no dnsmasq.conf e está originalmente vazio. Existe um script para desfazer o acima de uma maneira minimalista, pois eu apenas mato a VM do roteador 3g (desconectando os resultados do usb do 3G em pânico no kernel ...), então eu realmente não me importo com isso.
O script garante que apenas os IPs WAN configurados para acesso à Internet continuem a ter acesso à Internet e nenhum outro. Os IPs da LAN para acesso à Internet são adicionados manualmente ao iptables do roteador 3g. (aqueles não mudam)