Ubuntu 18.04 作为路由器

Ubuntu 18.04 作为路由器

Ubuntu 18.04。我被要求使用 Ubuntu 作为一个简单的路由器。

Ubuntu 盒子有 2 个接口 - ens33 DHCP、ens38 192.168.10.1/24。33 是外部接口,38 是内部接口,仅供我使用。此盒子后面有几个网络 - 192.168.10.x 和 192.168.20.x。从这些网络中的任何一个,我都可以 ping ubuntu 盒子上的两个接口。我无法通过外部接口 (33) ping 出去。

我已经编辑 /etc/sysctl.conf 以允许 ipv4 转发 - net.ipv4.ip_forward=1。

我添加了一条路由,通过 38 显示到其他网络 192.168.20.x 的网关。

不看 nat,只看路由。

有人看到我遗漏了什么吗?如果需要更多信息,请告诉我。

道格

答案1

想发布我正在寻找的答案,以防其他人需要相同的场景。AlexP 在上面指出了正确的方向 - 外面的盒子不知道如何回复,我不想在每个可能使用这个的网络上添加路由。

我确实想要路由,但我也需要 NAT。

这些说明是从几个不同的来源拼凑起来的,但主要是 -https://help.ubuntu.com/lts/serverguide/firewall.html<- 此处为 ufw IP Maquerading 部分。

CentOS 说明来自这里-https://ronnybull.com/2015/11/20/how-to-centos-7-router/

我假设 Ubuntu 机器上有一个内部接口和一个外部接口,并且这些接口的设置已经配置好了。(还在最底部添加了使用 CentOS 7 完成同样操作的说明 - 这也是我的要求)

1.首先,启用 ufw 和 ufw 日志记录

sudo ufw enable
sudo ufw logging on

2. 刷新所有现有规则(如果您已使用 ufw 或 IP 表进行防火墙,请不要执行此操作)。删除并刷新。默认表为“filter”。其他表(如“nat”)必须明确说明。

iptables --flush            # Flush all the rules in filter and nat tables    
iptables --table nat --flush    
iptables --delete-chain    # Delete all chains that are not in default filter and nat table    
iptables --table nat --delete-chain    

3。首先,需要在 ufw 中启用数据包转发。需要调整两个配置文件,在 /etc/default/ufw 中将 DEFAULT_FORWARD_POLICY 更改为“ACCEPT”:

DEFAULT_FORWARD_POLICY="ACCEPT"

4。然后编辑 /etc/ufw/sysctl.conf 并取消注释:

net/ipv4/ip_forward=1
net/ipv4/conf/all/forwarding=1 
net/ipv6/conf/default/forwarding=1 # if using IPv6

5。现在将规则添加到 /etc/ufw/before.rules 文件。默认规则仅配置过滤表,要启用伪装,需要配置 nat 表。在文件顶部的标题注释之后添加以下内容:

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT

对于每个表,都需要一个相应的 COMMIT 语句。在这些示例中,仅显示了 nat 和 filter 表,但您也可以为 raw 和 mangle 表添加规则。在上面的示例中,将 eth0、eth1 和 192.168.0.0/24 替换为您网络的适当接口和 IP 范围。

6。最后,禁用并重新启用 ufw 以应用更改:

sudo ufw disable && sudo ufw enable

现在应该已启用 IP 伪装。您还可以将任何其他 FORWARD 规则添加到 /etc/ufw/before.rules。建议将这些附加规则添加到 ufw-before-forward 链中。

CentOS 7 防火墙配置完成同样的事情-

1.启用 IPv4 数据包转发。

a. 将以下内容添加到 /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. 应用 sysctl 设置:

sysctl -p

2.向firewalld添加直接规则。添加--permanent选项以在重启后保留这些规则。

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT

a. 将以下内容添加到 /etc/sysctl.conf:

 net.ipv4.ip_forward = 1

b. 应用 sysctl 设置:

sysctl -p

2.向firewalld添加直接规则。添加--permanent选项以在重启后保留这些规则。

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth_ext -j MASQUERADE    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_int -o eth_ext -j ACCEPT    
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth_ext -o eth_int -m state --state RELATED,ESTABLISHED -j ACCEPT

相关内容