# /dev/shm/wget --bind-interface=ppp0 -S www.google.cn/m
--12:49:18-- http://www.google.cn/m
=> `m'
Resolving www.google.cn... 203.208.35.100, 203.208.35.101
Connecting to www.google.cn|203.208.35.100|:80... ^C
Although the tcpdump indicates the ACK packet is back and the connection should be established:
# tcpdump -i ppp0 -v
tcpdump: listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 68 bytes
12:49:18.976925 IP (tos 0x0, ttl 64, id 29090, offset 0, flags [DF], proto: TCP (6), length: 60) 10.8.243.46.57503 > 203.208.35.100.http: S 3708069095:3708069095(0) win 5840
12:49:19.649198 IP (tos 0x0, ttl 54, id 45101, offset 0, flags [none], proto: TCP (6), length: 60) 203.208.35.100.http > 10.8.243.46.57503: S 1649371307:1649371307(0) ack 3708069096 win 5672
12:49:23.029140 IP (tos 0x0, ttl 54, id 45102, offset 0, flags [none], proto: TCP (6), length: 60) 203.208.35.100.http > 10.8.243.46.57503: S 1649371307:1649371307(0) ack 3708069096 win 5672
After some research, I realized there is something wrong with the route filter setting. So:
echo 0 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
Now the connection works as desired. For more information, see here