Linux作为网关(没有NAT)

我试图configuration一个Linux服务器作为网关/路由器,但我无法得到它的工作,我设法find的所有信息是NAT相关的。

我有一个公共的IP网关和后面的设备,所以我想要网关简单地路由数据包到互联网 – 再次:没有NAT!

我已经设法成功地访问互联网的网关(这只是一个configurationIP和GW的问题),它后面的计算机可以与它通信。

[编辑:更多信息]

这实际上是一个IPv6块( 2800:40:403::0/48 )(但是我发现大多数实用程序和指令都可以很容易地从IPv4调整到IPv6)。

服务器也有端口:

  • wan: 2800:40:403::1/48
  • lan: 2800:40:403::3/48

其中一台电脑通过交换机连接到它。

  • 2800:40:403::7/48

服务器上的wan界面可以ping通www.google.com,不会有任何问题。 服务器和客户端上的lan接口可以相互ping通,没有问题(以及SSH等)。

我已经尝试将服务器设置为客户端的默认网关,没有运气:

 client # route -A inet6 add default gw 2800:40:403::3 dev eth1 server # cat /proc/sys/net/ipv6/conf/all/forwarding 1 

我不想要任何过滤/防火墙/等,只是简单的路由。

谢谢。

我假设你有一个公用的IP地址为你的广域网端,和一个局域网端的块,如下所示:

 ISP-----ROUTER ETH0/ROUTER ETH1------SWITCH------PCs 

您需要为WAN接口提供一个公共IP地址,ISP会通过此IP地址为您提供的子网路由

只需要将转发位设置为1

 echo 1 > /proc/sys/net/ipv4/ip_forward 

为了使它持久化,你需要编辑/etc/sysctl.conf,find这一行:

 net.ipv4.ip_forward=0 

并将其更改为

 net.ipv4.ip_forward=1 

如果评论,请务必取消注释。

现在,你需要做的就是将你的电脑的默认网关设置为指向linux路由器,并假设ISP已经通过路由你的局域网的公共ip地址来完成他们的工作。

现在。 如果你只有一个公共地址块,那么你不需要寻找路由,只需要将ISP连接到一个交换机,将所有的PC连接到交换机,就可以完成了。 如果你可以指定更多的细节,我们可能会帮助你更多。


编辑:

你说你的接口configuration如下:

 wan: 2800:40:403::1/48 lan: 2800:40:403::3/48 

什么是您的默认网关? 我猜2800:40:403 :: 2/48

它不应该像这样工作。 我还没有与IPv6合作,但你有一个子网中的两个接口,我想我可以让你configuration,但是说一个Cisco路由器至less会警告你重叠

最简单的解决scheme是所有的PC都连接到ISP的交换机。

真正的解决办法是告诉ISP在他们的广域网地址空间上给你一个公共地址,并通过该地址路由该块。 那么你所要做的就是configuration:

 wan: ip-from-their-space lan: 2800:40:403::1/48 

所有的LAN PC都应该指向那个默认的PC。

你有一个非常大的地址空间,你可以做的是进一步子网。


编辑:

如果你真的想连接接口,你可以做任何IP没有关系。 你将只有一个IP地址的接口。

所有你需要做的就是安装bridge-utils,然后你这样configuration它:

 ip add flush dev eth0 ip add flush dev eth1 brctl addbr br0 brctl addif br0 eth0 eth1 ip link set dev br0 up 

然后在br0上configuration你的IPv6地址,现在你有一个透明的网桥。 它仍然不能解决你的IPv4问题,但你可以这样解决:

在br0和NAT上这样configurationIPv4公私地址:

iptables -t nat -A POSTROUTING -j SNAT -s / –to-source

转发是否启用?

 echo 1 > /proc/sys/net/ipv4/ip_forward