【家庭服务器计划】iptables | 配置路由转发和 NAT

有些杂乱,可以直接参考代码高亮部分

 

启用内核ip包转发

确认 /etc/sysctl.conf 里面 net.ipv4.ip_forward=1

或者直接

[code]echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf
sysctl -p[/code]

 

iptables

如果是 RH 系的,自行处理 firewalld。。可以选择关掉 systemctl mask firewalld

Linux 内核中有ip包过滤系统,iptables 只是一个管理程序。

表(table)是分类定义规则的,链(chain)是定义报文触发某个行为的时候的规则。可以自己定义链。

有3张表

  • filter 过滤ip包用的,相当于防火墙
  • nat 地址转换
  • mangle 修改数据

filter 表的链

  • INPUT 入流量的过滤
  • FORWARD 转发的过滤
  • OUTPUT 出流量的过滤

nat 表的链

  • PREROUTING 经过转发程序前对报文nat转换规则
  • INPUT 经过转发程序(FORWARD)后,没有匹配转发规则,对报文nat转换规则
  • OUTPUT 对出方向的报文(不是经过FORWARD转发出去的)的nat转换规则
  • POSTROUTING 对出方向的报文(最终准备发送前)的nat转换规则

mangle 表的链

  • PREROUTING 进入FORWARD和nat PREROUTING之前对报文的修改
  • INPUT 经过转发程序(FORWARD)后,没有匹配转发规则,nat前对报文的修改
  • FORWARD 转发过滤前
  • OUTPUT 从本机出来 经过nat链之前
  • POSTROUTING 发送前,经过nat链之前

 

图片Ref https://my.oschina.net/HankCN/blog/117796

在 INPUT 过程中,filter表和mangle表中间应该还有nat表,图片没有给出

因为较少在这里用NAT,经验不足可能有误

iptables 参数

  • -L 查看
  • -n 用数字表示地址和端口
  • -t 对哪个表操作
  • -A chain 添加记录,chain是链名
  • -I chain [rulenum] 插入记录,插入到第几个
  • -D chain [rulenum] 删除记录,删除第几个
  • -F 删除当前表全部记录
  • -N 新建链
  • -X 删除链
  • -p 指定协议
  • –dport 目标端口
  • -j 匹配规则后的操作

典型操作

  • iptables -L 查看filter表
  • iptables -L -t nat 查看nat表
  • iptables -A INPUT -p tcp –dport 22 -j ACCEPT 放行tcp 22端口的报文
  • iptables -A INPUT -p tcp –dport 80 -s 192.168.1.0/24  -j REJECT 拒绝来自192.168.1.0/24的tcp 80端口的报文
  • iptables -A INPUT -p udp –dport 8888 -j DROP 丢弃udp 8888端口的报文

 

NAT 配置

内网为 192.168.233.0/24 ,到其他子网的包要进行 NAT 伪装。

[code]iptables -t nat -A POSTROUTING -s 192.168.233.0/24 ! -d 192.168.233.0/24 -m comment –comment Outgoing -j MASQUERADE[/code]

-t nat 操作nat表

-A POSTROUTING 加入POSTROUTING链

-s  192.168.233.0/24 源地址为 192.168.233.0/24

! -d 192.168.233.0/24 目标地址不是 192.168.233.0/24

-m comment –comment Outgoing 注释这是一条Outgoing相关的记录

-j MASQUERADE 动态伪装模式 另外还有 SNAT 源地址转换 DNAT 目标地址转换

 

添加FORWARD规则

filter 表的 FORWARD 链默认是 ACCEPT 全部。但是这里还是写上吧

[code]iptables -A FORWARD -s 192.168.233.0/24 -m comment –comment Outgoing -j ACCEPT
iptables -A FORWARD -d 192.168.233.0/24 -m comment –comment Outgoing -j ACCEPT[/code]

 

评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇