请问版主和各位大侠,如何实现lwip和外界主机通信啊?
在这里看到各位对cygwin和vmware+redhat的评价后,觉得选择vmpare好一些,经过快两天的努力,从头开始终于成功实现了ucos+lwip,现在请教一个问题就是:如果我想要在其他主机上ping通lwip,该怎么做啊?谢谢各位大侠了。 :-)我得系统是win xp和vmware,redhat。 这个问题好像有点复杂。
首先,你的 vmware+redhat 可以上网了吗? 可以了啊。使用的是host-only,就是说和主机windows使用同一个ip地址
是不是首先需要使用birdged,使用两个ip啊?
谢谢 1.Sorry,我没有使用过ucos+lwip;
2.我觉得你的问题主要在于理解vmware虚拟网卡的实现方式.网上这样的资料很多,可以看看. 谢谢
如果在vmware下实现不方便的话,那么单纯在redhat9上实现的skyeye+ucos+lwip如何可以使外界主机ping通lwip啊。 用iptables 实现网络重定向,王利明实验过,不过我还不会。
王利明呢? 呵呵,希望能给一个更详细一点的解答阿。
我对iptables这个东西都没听说过,最好能给个详细的步骤了:)
另外问个额外的问题:如果我在linux下把linux中类似于windows中tcp/ip的东西卸载掉,只在linux中运行一个lwip的tcp/ip协议,可以实现么?可以保证获得ip地址么?
如果可以的话linux中相应的软件包那个啊?
请各位大侠给个建议啊:) 试试在vmware中把网卡设置为bridge模式,这样虚拟网卡也可以获得独立的ip hehe ,谢谢,我知道这个。
关键问题是redhat的eth0和tap0的网络前缀不一样,需要修改路由。 首先确定你的vmware的redhat可以和外界的机器通信。
我们需要用iptables进行ip伪装和端口重定向。前者让lwip的应用访问外界,后者让外界程序访问lwip。
假设你的lwip有个80端口的tcp服务,你想让外界的程序通过访问redhat的6000端口访问此服务。假设我们用10.0.0.0网段作为lwip的ip地址,运行如下脚本:
#!/bin/sh
MYIP=`ifconfig -a eth0 | grep inet | sed -e 's/^.*addr://' -e 's/ .*$//'`
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -t nat -F
iptables -A FORWARD -s 10.0.0.0/16 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -j DNAT -p tcp -d $MYIP --dport 6000 --to 10.0.0.1:80
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE
iptables -L -n -t nat
iptables -L
然后,外界的程序通过redhat的6000端口就可以访问lwip的80端口的服务了。lwip也可以访问外界。 hehe ,万分感谢各位版主的热心帮助:) :-D:-D:-D
页:
[1]