求助,双线,怎么做DDNS

请教一下大家,单线的时候可以用$PPP_LOCAL获取到自己的IP,但是双线的时候,脚本就只能获取到一个,请教一下,这种能怎么办,谢谢!!

不知道你是什么脚本,也不知道你的变量$PPP_LOCAL数值从哪来的,最好贴出你的脚本。
多线获取线路IP,可以用curl加–interface参数指定哪个网口,比如:
curl --interface eth0 …
这样使用的IP就是那个网口拨号得到的IP。
建议DDNS的更新用ppp拨号后的脚本实现,扔个脚本在/etc/ppp/ip-up.d/,pppd会传递几个参数进脚本,这个是从remote报文获得的,也是最准确的。

是的,我就是放在这个目录,$PPP_LOCAL就是你说的pppd传递进来的参数

请教个问题. 我加了–interface eth0 或者 --interface eth1 后 curl 经常失败,偶尔成功? 这是还要设置什么东西吗?

不加的话 每次都成功.

curl --interface eth1 “ip.6655.com/ip.aspx
curl: (7) Failed to connect to ip.6655.com port 80: No route to host

是不是前面做了策略路由?这个必须放在最后执行。偶尔能成功的话,也有可能前面的路由系统还没消化完,前面加点等待时间吧:
sleep 3 && curl --interface …
或者,干脆curl前加多一个强制路由:
route add -host ip.6655.com dev eth1

你说的策略路由是指 firewall 里面的rule吗? 还是别的什么?

我是直接登录 erx 的cli 运行curl 命令的.
试了下 sleep 3 && curl --interface eth1 “ip.6655.com/ip.aspx” 不行, 效果一样.
route add -host ip.6655.com dev eth1 后 可以看到router 里面有东西了. 不过curl 还是不行, 还是走的eth0. 加上–interface 也一样是 no route to host
180.76.158.184 就是运行route add -host 加进去的

route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.16.1    0.0.0.0         UG    0      0        0 eth0
180.76.158.184  0.0.0.0         255.255.255.255 UH    0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 switch0
192.168.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.26.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

这不科学啊,必须OK的。route add -host后:
traceroute ip.6655.com
看看路由怎么走,怀疑是eth1没拨号。或者再严谨点:
route add -host ip.6655.com gw <eth1拨号后获得的网关> dev eth1
然后:
traceroute ip.6655.com
再看看路由怎么走

traceroute 走的是 eth0的地址

traceroute to ip.6655.com (180.76.158.184), 30 hops max, 38 byte packets
 1  192.168.16.1 (192.168.16.1)  0.429 ms  0.391 ms  0.437 ms

加了 route add -host ip.6655.com gw 192.168.26.1 dev eth1 效果还是一样

root@router:~# route add -host ip.6655.com gw 192.168.26.1 dev eth1
root@router:~# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.16.1    0.0.0.0         UG    0      0        0 eth0
180.76.158.184  192.168.26.1    255.255.255.255 UGH   0      0        0 eth1
180.76.158.184  0.0.0.0         255.255.255.255 UH    0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 switch0
192.168.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.26.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

root@router:~# traceroute ip.6655.com
traceroute to ip.6655.com (180.76.158.184), 30 hops max, 38 byte packets
 1  192.168.16.1 (192.168.16.1)  0.438 ms  0.551 ms  0.489 ms

eth1 是能用的, 因为我在firewall rule 里面设了一个IP 固定走eth1, 在那台电脑上运行curl 看到的就是 eth1的IP了
firewall 里面就是设了几个固定走eth1 的IP 和端口, 然后其他的都走负载均衡. eth0 weight 80, eth1 weight 20

eth0和eth1都不是拨号的, 是光猫分配的一个固定IP过来, eth1 地址是192.168.26.9.