添加内网到外网的路由

添加内网到外网的路由

我使用运行 Arch 的盒子作为我的路由器和防火墙(带有 shorewall)。最近,我尝试在系统中添加另一个网络,但失败了。将所有内容放回之前的位置并确认一切都完全相同后,我在从内部网络 (192.168.1.0/24) 到外部的路由方面遇到了一些问题。目前的情况如下:

  • 我可以从防火墙 ping 通外部网络
  • 我可以从我的内部网络 ping 防火墙
  • 我无法从内部网络 ping 通外部网络

我有两个网络接口,enp5s0(内部)和enp6s0(外部)。以下是我的路由ip route ls(注意我的外部 IP 以 .78 结尾,出于显而易见的原因,我编辑了其余部分):

default via [redacted].1 dev enp6s0  src [redacted].78  metric 203  mtu 576
[redacted].0/24 dev enp6s0  proto kernel  scope link  src [redacted].78
[redacted].0/24 dev enp6s0  proto kernel  scope link  src [redacted].78  metric 203  mtu 576
192.168.1.0/24 dev enp5s0  proto kernel  scope link  src 192.168.1.1  metric 202  

来自内部网络上的计算机的跟踪路由显示它到达 192.168.1.1,然后超时。我怀疑我需要添加另一条路由,允许来自 192.168.1.0/24 的流量通过 enp6s0 路由到网络。我尝试过不同的路线,但没有一个有效。另外,我的 dhcpcd.conf 确实发生了变化。如果注释行未被注释,它将创建第二个默认路由,完全停止任何连接。以前,这不是问题。

interface enp5s0
static ip_address=192.168.1.1/24
#static routers=192.168.1.1
static domain_name_servers=192.168.1.1 # I have TOR DNS bound to this ip  

任何帮助将非常感激。

答案1

我在 Arch 服务器上做过类似的事情。服务器具有enp4s8“外部”网络和wlp1s0“内部”网络。 enp4s8具有静态定义的 IP 地址 10.0.0.3,以及到 DSL 调制解调器 10.0.0.1 的默认路由。

/usr/bin/ip link set dev wlp1s0 up
/usr/bin/ip addr add 172.16.0.1/24 dev wlp1s0
sleep 10

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
iptables -A FORWARD -o enp4s8 -i wlp1s0 -s 172.16.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

dhcpd -cf /etc/dhcpd.wlp1s0.conf wlp1s0

您可能没有打开 IPv4 转发,并且iptables有时很难获得正确的转发。

技巧的另一部分是在/etc/dhcpd.wlp1s0.conf.我认为你必须告诉“内部”网络上的机器它们的默认路由和带有 DHCP 的路由器:

option domain-name "fleegle";
option domain-name-servers 172.16.0.1;
option routers 172.16.0.1;
option ntp-servers 10.0.0.3;
default-lease-time 14440;
ddns-update-style none;
deny bootp;
shared-network intranet {
        subnet 172.16.0.0 netmask 255.255.255.0 {
                option subnet-mask 255.255.255.0;
                pool { range 172.16.0.50 172.16.0.200; }
        }
}

相关内容