我想在linux上创build一个有2个接口eth0和eth1的网关。
Eth1由lte调制解调器创build,一旦lte调制解调器连接到networking并获得一个ip地址。 然后,在网关上运行DHCP服务器,将此IP地址(例如:10.20.30.6)提供给连接到eth0 lannetworking的PC。 那么eth0被分配了ip地址10.20.30.1
现在eth1本身没有分配任何ip地址。
现在我想将lan接口eth0上从pc接收的所有数据包转发到eth1 wan接口。
请build议我需要使用ip表规则来创build此转发。
请注意,由于Ite调制解调器的限制,不能使用网桥模式,由于要build立的体系结构的限制,也不能使用NAT模式。
你要去哪里,你不需要iptables。
我知道你想要做的是让网关在两个接口之间转发IP数据包,而不需要网关对转发的数据包执行任何NAT。 你可以做到这一点,没有任何iptables规则。
我的LTE知识缺乏。 所以,如果结果是任何LTE特定的警告,我将无法帮助你。 我的回答大部分假设eth0和eth1都运行在以太网上的普通IPv4。
首先你需要确保转发已启用:
echo 1 >/proc/sys/net/ipv4/ip_forward
从因特网到达的数据包将在eth1到达。 但是,这些数据包的发送者可能需要执行10.20.30.6 ARP请求,该请求未分配给您的网关。 因此,除非启用ARP代理,否则您的网关将不会响应这些ARP请求:
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
一旦发送了ARP回复,其余的进入数据包的处理就使用普通的IP数据包转发进行,不需要任何魔法。
从PC到网关的数据包不需要通过eth0到达网关的技巧。 那么棘手的部分就是如何让他们通过eth1接口离开。
你需要一个default路由。 但是这条路由的网关大概是10.20.30.1 ,你刚刚在你设置的网关上分配给eth0 。 但是,如果您知道原始网关的MAC地址,则无需真实的网关IP地址即可使其工作。
首先你发明了一个占位符网关IP地址(应该是一个RFC 1918地址,否则你不需要进行通信)。 例如,我将假设10.1.2.3 :
ip neigh add 10.1.2.3 lladdr xx:xx:xx:xx:xx:xx dev eth1 ip route add 10.1.2.3 dev eth1 ip route add default via 10.1.2.3
由于10.1.2.3被创build为网关ARPcaching中的永久条目,因此不会为此地址发送ARP请求。 这意味着下一个网关不知道你select的占位符IP地址是不成问题的。