我的情况是:
host1
通过接口连接互联网eth0
;host1
拨号host2
并与其建立PPP连接;host2
无法访问互联网;host1
需要host2
使用此接口共享互联网连接ppp0
;
因此,我认为基本上我们有这样的:
(internet) <eth0> === host1 === <ppp0> === host2
这是来自host1
:
# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 7409 bytes 29789661 (28.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5933 bytes 422162 (412.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 28 bytes 2352 (2.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28 bytes 2352 (2.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.100.0.2 netmask 255.255.255.255 destination 10.100.0.1
ppp txqueuelen 3 (Point-to-Point Protocol)
RX packets 5 bytes 78 (78.0 B)
RX errors 2 dropped 0 overruns 0 frame 0
TX packets 5 bytes 90 (90.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这是来自host2
:
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
ppp0 Link encap:Point-to-Point Protocol
inet 10.100.0.1 P-t-P: 10.100.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:5 errors:1 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
我尝试iptables
按照建议使用在接口之间转发流量这里。
我使用 gwhost2
为 dev 添加了默认路由,即 的 ip 。ppp0
10.100.0.2
host1
有什么建议吗?我真的不熟悉网络技术。
我认为最重要的评论是:
host1
是调用者host2
;- 我
host1
可以做任何我想做的事,但是host2
有一个只读文件系统,我只能添加路线和更改一些小东西;
答案1
这个设置有些棘手:
如果host1
是充当 ppp 服务器的那个,那么问题就很容易解决了。只需配置 ppp 守护进程以将默认路由推送到客户端即可
但是由于host1
是呼叫者,host2
我不知道如何host1
推动默认路由(并且手动设置它是不可接受的)除非......
对我来说,解决方案是使用路由协议进程(rip 或 ospf),以便当链接建立时,这些进程就适当的路由表达成一致
最后,NAT 必须包含所有使用的 IP 范围才能访问互联网