首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ubuntu 18.04作为路由器

Ubuntu 18.04作为路由器
EN

Ask Ubuntu用户
提问于 2018-06-29 19:09:28
回答 1查看 43.2K关注 0票数 7

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

Ubuntu有两个接口-- ens33 DHCP,ens38 192.168.10.1/24。33在外面,38在里面是为了我的目的。这个盒子后面有几个网络- 192.168.10.x和192.168.20.x。在任何这些网络中,我都可以在ubuntu框上平平这两个接口。我无法通过外部接口(33)。

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

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

不是在找纳特,只是路线而已。

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

道格

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2018-07-03 12:54:43

我想贴出我正在寻找的答案,以防其他人需要同样的场景。AlexP在上面指出了正确的方向--外面的盒子不知道怎么回复,我也不想在每一个可能使用它的网络上添加路由。

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

这些指令是从几个不同的来源拼凑在一起的,但主要是-- https://help.ubuntu.com/lts/serverguide/firewall.html <- -这里的ufw标记部分。

这里的CentOS指令- https://ronnybull.com/2015/11/20/how-to-centos-7-router/

我假设Ubuntu框上有一个内部和外部接口,并且这些设置已经配置好了。(还在最底层添加了指令,以便使用CentOS 7完成同样的任务-这也是我的要求)

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

代码语言:javascript
运行
复制
sudo ufw enable
sudo ufw logging on

2.刷新任何现有规则(如果您已经在使用ufw或IP表作为防火墙),请不要这样做。删除并刷新。默认表是“过滤器”。其他如"nat“必须明确说明。

代码语言:javascript
运行
复制
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更改为“接受”:

代码语言:javascript
运行
复制
DEFAULT_FORWARD_POLICY="ACCEPT"

4.然后编辑/etc/ufw/sysctl.conf并取消评论:

代码语言:javascript
运行
复制
net/ipv4/ip_forward=1
net/ipv4/conf/all/forwarding=1 
net/ipv6/conf/default/forwarding=1 # if using IPv6

5.现在将规则添加到/etc/ufw/etc. rules文件。默认规则只配置筛选器表,要实现伪装,需要配置nat表。在标题注释之后将以下内容添加到文件的顶部:

代码语言:javascript
运行
复制
# 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表,但您也可以为原始表和mangle表添加规则。在上面的示例中,用适合您的网络的接口和IP范围替换eth0、eth1和192.168.0.0/24。

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

代码语言:javascript
运行
复制
sudo ufw disable && sudo ufw enable

现在应该启用IP伪装。还可以将任何其他转发规则添加到/etc/ufw/etc.规则。建议将这些附加规则添加到ufw前向链中。

CentOS 7 firewalld配置来完成同样的任务-

1.启用IPv4包转发。

a.在/etc/sysctl.conf中添加以下内容:

代码语言:javascript
运行
复制
 net.ipv4.ip_forward = 1

b.应用sysctl设置:

代码语言:javascript
运行
复制
sysctl -p

2.在消防系统中增加直接规则。添加--永久选项,以便在重新启动时保留这些规则。

代码语言:javascript
运行
复制
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中添加以下内容:

代码语言:javascript
运行
复制
 net.ipv4.ip_forward = 1

b.应用sysctl设置:

代码语言:javascript
运行
复制
sysctl -p

2.在消防系统中增加直接规则。添加--永久选项,以便在重新启动时保留这些规则。

代码语言:javascript
运行
复制
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
票数 9
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1050816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档