前言:有的情况下,内网有某个设备可以访问外网,且有独立ipv6地址,而内网有的设备只有ipv4,且无法直接访问外网。我们可以利用有ipv6地址的设备通过socat转发数据到内网ipv4设备,实现它们资源可访问。

1.设置iptables

#设置防火墙,开放444端口
ip6tables -A INPUT -p tcp --dport 444 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 444 -j ACCEPT
ip6tables-save > /etc/iptables/rules.v6

2.设置socat

输入:
nohup socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444 >/dev/null 2>log &

这段代码可以实现通过访问“[路由器ipv6地址]:444”,达到公网访问“192.168.2.99:444”的目的。

3.socat设置为自动运行

3.1 debian最简单的方法是用cron实现:

crontab -e
输入以下内容:
@reboot socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444
nohup什么的都不需要,就可以了

3.2 supervisor监管自启动

  • 安装:
    apt update; apt install supervisor -y
  • 编辑配置文件:
    nano /etc/supervisor/conf.d/socat.conf
  • 内容如下:
[program:socat] 
user=root
command=/usr/bin/socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444
autorstart=true
directory=/usr/bin
autorestart=true
startsecs=5
startretries=100
redirect_stderr=true
stdout_logfile=/root/supervisor_log/log.txt
stderr_logfile=/root/supervisor_log/err.txt
  • 编辑主配置文件:
    nano /etc/supervisor/supervisord.conf
    增加如下:
[inet_http_server]
port = 192.168.2.110:9001 #IP和绑定端口
username = root #管理员名称
password = 123456 #管理员密码

重启使配置文件生效:
supervisorctl reload或者supervisorctl update
登录192.168.2.110:9001用设置好的用户和密码登录,能看到进程运行状态。重新启动电脑,发现自启动生效了。

分类: LINUXTECH

Avatar photo

sontjer

For the amatuer tech nerds & life maniacs.

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注